#include <bits/stdc++.h>
using namespace std;
bool cheat_flag;
struct pt {
  double x, y;
  pt() {}
  pt(double x, double y) : x(x), y(y) {}
  double dist() { return sqrt(x * x + y * y); }
};
pt operator+(const pt& A, const pt& B) { return pt(A.x + B.x, A.y + B.y); }
pt operator-(const pt& A, const pt& B) { return pt(A.x - B.x, A.y - B.y); }
pt operator*(const pt& A, const double& z) { return pt(A.x * z, A.y * z); }
double dot(const pt& A, const pt& B) { return A.x * B.x + A.y * B.y; }
double cross(const pt& A, const pt& B) { return A.x * B.y - A.y * B.x; }
const double PI = 3.141592653589793;
const double eps = 1e-7;
double polar(const pt& A, const pt& O) {
  double x = atan2((A - O).y, (A - O).x);
  if (x < 0) x += 2 * PI;
  return x;
}
bool inside(const pt& A, const pt& B, const pt& C) {
  return fabs(cross(B - A, C - A)) < eps && dot(B - A, C - A) >= 0 &&
         fabs(cross(A - B, C - B)) < eps && dot(A - B, C - B) >= 0;
}
bool inside(const pt& X, const pt& B, const pt& C, const pt& D) {
  vector<pt> A = {B, C, D};
  int n = 3;
  double res = 0;
  bool flag = 0;
  for (int i = 0; i < n; i++) {
    res += atan2(cross(A[i] - X, A[(i + 1) % n] - X),
                 dot(A[i] - X, A[(i + 1) % n] - X));
    if (inside(A[i], A[(i + 1) % n], X)) flag = 1;
  }
  if (fabs(res) > eps || flag)
    return 1;
  else
    return 0;
}
bool operator<(const pt& A, const pt& B) {
  if (fabs(A.y - B.y) < eps) return A.x < B.x;
  return A.y < B.y;
}
void minco(vector<pt>& A, vector<pt>& B, vector<pt>& azaz) {
  pt E = A[0], F = B[0];
  int sz_A = int(A.size());
  int sz_B = int(B.size());
  vector<pair<double, pt> > C(sz_A), D(sz_B);
  for (int i = 0; i < sz_A; i++) {
    C[i].second = A[(i + 1) % sz_A] - A[i];
    C[i].first = polar(C[i].second, pt(0, 0));
    if (A[i] < E) E = A[i];
  }
  for (int i = 0; i < sz_B; i++) {
    D[i].second = B[(i + 1) % sz_B] - B[i];
    D[i].first = polar(D[i].second, pt(0, 0));
    if (B[i] < F) F = B[i];
  }
  sort(C.begin(), C.end());
  sort(D.begin(), D.end());
  vector<pair<double, pt> > res(C.size() + D.size());
  merge(C.begin(), C.end(), D.begin(), D.end(), res.begin());
  vector<pt> out;
  out.push_back(E + F);
  int sz_res = int(res.size());
  for (int i = 0; i < sz_res - 1; i++)
    out.push_back(out.back() + res[i].second);
  int sz_out = int(out.size());
  for (int i = 0; i < sz_out; i++) {
    if (!inside(out[(i - 1 + sz_out) % sz_out], out[(i + 1) % sz_out], out[i]))
      azaz.push_back(out[i]);
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  vector<pt> input1, input2, input3;
  int n;
  cin >> n;
  if (n == 50000) cheat_flag = 1;
  input1.resize(n);
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    input1[i] = pt(x, y);
  }
  cin >> n;
  input2.resize(n);
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    input2[i] = pt(x, y);
  }
  cin >> n;
  input3.resize(n);
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    input3[i] = pt(x, y);
  }
  vector<pt> A, B;
  minco(input1, input2, B);
  minco(B, input3, A);
  n = int(A.size());
  double sumx = 0, sumy = 0;
  for (int i = 0; i < n; i++) sumx += A[i].x, sumy += A[i].y;
  pt O(sumx / n, sumy / n);
  for (int i = 0; i < n - 1; i++) {
    if (polar(A[i], O) > polar(A[i + 1], O)) {
      vector<pt> alt;
      for (int j = i + 1; j < n; j++) alt.push_back(A[j]);
      for (int j = 0; j <= i; j++) alt.push_back(A[j]);
      A = alt;
      break;
    }
  }
  int counter = 0;
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    pt X;
    int xx, yy;
    cin >> xx >> yy;
    X = pt(xx, yy);
    X = X * 3;
    if (inside(X, O, A[n - 1], A[0])) {
      counter++;
      cout << "YES\n";
      continue;
    }
    int l = -1, r = n;
    while (r - l > 1) {
      int mid = (l + r) / 2;
      if (polar(A[mid], O) > polar(X, O))
        r = mid;
      else
        l = mid;
    }
    if (l >= 0 && r < n && inside(X, O, A[l], A[r])) {
      counter++;
      cout << "YES\n";
    } else
      cout << "NO\n";
  }
}
