#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 6;
const int mod = 1e9 + 7;
const double pi = acos(-1.0);
const double eps = 1e-9;
struct Point {
  double x, y;
  Point(double x = 0, double y = 0) : x(x), y(y){};
};
Point F[maxn], p[maxn], p1[maxn], p2[maxn], p3[maxn], v1[maxn], v2[maxn];
int stk[maxn];
int top = 0, cnt;
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0) return -1;
  return 1;
}
bool operator==(const Point &a, const Point &b) {
  if (sgn(a.x - b.x) == 0 && sgn(a.y - b.y) == 0)
    return true;
  else
    return false;
}
Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); }
Point operator+(Point A, Point B) { return Point(A.x + B.x, A.y + B.y); }
Point operator/(Point A, double p) { return Point(A.x / p, A.y / p); }
Point operator*(Point A, double p) { return Point(A.x * p, A.y * p); }
double Dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
double Cross(Point v0, Point v1) { return v0.x * v1.y - v0.y * v1.x; }
double Dis(Point p1, Point p2) {
  return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
}
double Length(Point t) { return t.x * t.x + t.y * t.y; }
bool cmp1(const Point &A, const Point &B) {
  return sgn(A.y - B.y) < 0 || ((sgn(A.y - B.y) == 0 && sgn(A.x - B.x) < 0));
}
bool cmp2(const Point &A, const Point &B) {
  return sgn(Cross(A, B)) > 0 ||
         (sgn(Cross(A, B)) == 0 && sgn(Length(A) - Length(B)) < 0);
}
void Graham(Point *lst, int &n) {
  sort(lst + 1, lst + n + 1, cmp1);
  Point bs = lst[1];
  top = 1;
  stk[top] = 1;
  for (int i = 1; i <= n; i++) lst[i] = lst[i] - bs;
  sort(lst + 2, lst + n + 1, cmp2);
  for (int i = 2; i <= n; i++) {
    while (top > 1 && sgn(Cross(lst[i] - lst[stk[top - 1]],
                                lst[stk[top]] - lst[stk[top - 1]])) >= 0)
      top--;
    stk[++top] = i;
  }
  for (int i = 1; i <= top; i++) lst[i] = lst[stk[i]] + bs;
  n = top;
  lst[top + 1] = lst[1];
  return;
}
void Minkowski(Point *A, int n, Point *B, int m, Point *C) {
  for (int i = 1; i <= n; i++) v1[i] = A[i + 1] - A[i];
  for (int i = 1; i <= m; i++) v2[i] = B[i + 1] - B[i];
  cnt = 1;
  C[cnt] = A[1] + B[1];
  int p1 = 1, p2 = 1;
  while (p1 <= n && p2 <= m) {
    ++cnt;
    if (sgn(Cross(v1[p1], v2[p2])) >= 0)
      C[cnt] = C[cnt - 1] + v1[p1++];
    else
      C[cnt] = C[cnt - 1] + v2[p2++];
  }
  while (p1 <= n) {
    ++cnt;
    C[cnt] = C[cnt - 1] + v1[p1++];
  }
  while (p2 <= m) {
    ++cnt;
    C[cnt] = C[cnt - 1] + v2[p2++];
  }
}
int pan_PL(Point p, Point a, Point b) {
  return !sgn(Cross(p - a, p - b)) && sgn(Dot(p - a, p - b)) < 0;
}
int in(Point *P, int n, Point a) {
  if (sgn(Cross(a - P[1], P[2] - P[1])) > 0 ||
      sgn(Cross(P[n] - P[1], a - P[1])) > 0)
    return 0;
  if (pan_PL(a, P[1], P[2]) || pan_PL(a, P[1], P[n])) return 1;
  int l = 2, r = n - 1;
  while (l < r) {
    int mid = l + r + 1 >> 1;
    if (sgn(Cross(a - P[1], P[mid] - P[1])) > 0)
      r = mid - 1;
    else
      l = mid;
  }
  return sgn(Cross(a - P[r], P[r + 1] - P[r])) <= 0;
}
int main() {
  int n1, n2, n3;
  scanf("%d", &n1);
  for (int i = 1; i <= n1; i++) scanf("%lf%lf", &p1[i].x, &p1[i].y);
  scanf("%d", &n2);
  for (int i = 1; i <= n2; i++) scanf("%lf%lf", &p2[i].x, &p2[i].y);
  scanf("%d", &n3);
  for (int i = 1; i <= n3; i++) scanf("%lf%lf", &p3[i].x, &p3[i].y);
  Graham(p1, n1);
  Graham(p2, n2);
  Graham(p3, n3);
  Minkowski(p1, n1, p2, n2, p);
  int tot = cnt;
  Graham(p, tot);
  Minkowski(p, tot, p3, n3, F);
  Graham(F, cnt);
  int T;
  scanf("%d", &T);
  while (T--) {
    Point t;
    scanf("%lf%lf", &t.x, &t.y);
    if (in(F, cnt, t * 3.0))
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
