#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define trav(a, x) for(auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) (int)(x).size() typedef long long ll; typedef __int128 LL; template int sgn(T x) { return (x > 0) - (x < 0); } template struct Point { typedef Point P; T x, y; explicit Point(T x=0, T y=0) : x(x), y(y) {} bool operator<(P p) const { return tie(x,y) < tie(p.x,p.y); } bool operator==(P p) const { return tie(x,y)==tie(p.x,p.y); } P operator+(P p) const { return P(x+p.x, y+p.y); } P operator-(P p) const { return P(x-p.x, y-p.y); } P operator*(T d) const { return P(x*d, y*d); } P operator/(T d) const { return P(x/d, y/d); } T dot(P p) const { return x*p.x + y*p.y; } T cross(P p) const { return x*p.y - y*p.x; } T cross(P a, P b) const { return (a-*this).cross(b-*this); } T dist2() const { return x*x + y*y; } double dist() const { return sqrt((double)dist2()); } }; typedef Point P; vector

convexHull(vector

pts) { if (sz(pts) <= 1) return pts; sort(all(pts)); vector

h(sz(pts)+1); int s = 0, t = 0; for (int it = 2; it--; s = --t, reverse(all(pts))) for (P p : pts) { while (t >= s + 2 && h[t-2].cross(h[t-1], p) <= 0) t--; h[t++] = p; } return {h.begin(), h.begin() + t - (t == 2 && h[0] == h[1])}; } template int sideOf(P s, P e, P p) { return sgn(s.cross(e, p)); } template int sideOf(const P& s, const P& e, const P& p, double eps) { auto a = (e-s).cross(p-s); double l = (e-s).dist()*eps; return (a > l) - (a < -l); } template bool onSegment(P s, P e, P p) { return p.cross(s, e) == 0 && (s - p).dot(e - p) <= 0; } bool inHull(const vector

& l, P p, bool strict = true) { int a = 1, b = sz(l) - 1, r = !strict; if (sz(l) < 3) return r && onSegment(l[0], l.back(), p); if (sideOf(l[0], l[a], l[b]) > 0) swap(a, b); if (sideOf(l[0], l[a], p) >= r || sideOf(l[0], l[b], p)<= -r) return false; while (abs(a - b) > 1) { int c = (a + b) / 2; (sideOf(l[0], l[c], p) > 0 ? b : a) = c; } return sgn(l[a].cross(l[b], p)) < r; } int main() { int k,n; cin >> k; vector

points; LL x0 = 0; LL y0 = 0; for(int c1 = 0; c1 < k; c1++){ ll t,a,b; cin >> t >> a >> b; x0 += a; y0 += a*t; points.push_back(P(b-a, t*(b-a))); } vector

ppiped; for(int subset = 0; subset < (1 << k); subset++){ LL x1 = 0; LL y1 = 0; for(int c1 = 0; c1 < k; c1++){ if((subset & (1 << c1)) != 0){ x1 += points[c1].x; y1 += points[c1].y; } } ppiped.push_back(P(x1,y1)); } vector

hull = convexHull(ppiped); cin >> n; for(int c1 = 0; c1 < n; c1++){ ll x,y; cin >> y >> x; y *= x; x -= x0; y -= y0; if(inHull(hull, P(x,y), false)){ cout << "yes\n"; } else{ cout << "no\n"; } } return 0; }