#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  Point() {
    x = 0;
    y = 0;
  }
  Point(int xx, int yy) {
    x = xx;
    y = yy;
  }
  bool operator==(Point p1) { return x == p1.x && y == p1.y; }
  bool operator!=(Point p1) { return (x != p1.x || y != p1.y); }
  Point operator-(const Point p1) { return Point(x - p1.x, y - p1.y); }
  Point operator+(const Point p1) { return Point(x + p1.x, y + p1.y); }
  long long len() { return (x * x + y * y); }
  long long vec(Point p) { return (x * p.y - y * p.x); }
  void Print() { cout << x << ' ' << y << '\n'; }
  void Scan() { cin >> x >> y; }
};
Point M[4];
vector<Point> v;
vector<Point> mink;
bool cmp(Point p1, Point p2) {
  bool val1 = p1.y > 0 || (p1.y == 0 && p1.x > 0);
  bool val2 = p2.y > 0 || (p2.y == 0 && p2.x > 0);
  if (val1 != val2) return val1;
  return (p1.vec(p2) > 0);
}
bool cmp1(Point p1, Point p2) {
  long long v = p1.vec(p2);
  if (v > 0) return 1;
  if (v < 0) return 0;
  return p1.len() < p2.len();
}
int main() {
  for (int q = 1; q <= 3; q++) {
    int n;
    cin >> n;
    M[q] = Point(1e18, 1e18);
    vector<Point> v1;
    for (int i = 1; i <= n; i++) {
      int x, y;
      cin >> x >> y;
      v1.push_back(Point(x, y));
      if (y < M[q].y || (y == M[q].y && x < M[q].x)) {
        M[q] = Point(x, y);
      }
    }
    for (int i = 0; i < (int)v1.size(); i++) {
      v1[i] = v1[i] - M[q];
    }
    for (int i = 0; i < n; i++) {
      mink.push_back(v1[(i + 1) % n] - v1[i]);
    }
  }
  Point T = M[1] + M[2] + M[3];
  sort(mink.begin(), mink.end(), cmp);
  v.push_back(Point(0, 0));
  for (int i = 0; i + 1 < (int)mink.size(); i++) {
    v.push_back(v.back() + mink[i]);
  }
  int n1;
  n1 = v.size();
  Point M1 = Point(1e18, 1e18);
  vector<Point> vec;
  vector<Point> vec1;
  for (int i = 0; i < n1; i++) {
    int x, y;
    x = v[i].x;
    y = v[i].y;
    vec1.push_back(Point(x, y));
    if (y < M1.y || (y == M1.y && x < M1.x)) {
      M1 = Point(x, y);
    }
  }
  for (int i = 0; i < (int)vec1.size(); i++) {
    vec1[i] = vec1[i] - M1;
  }
  sort(vec1.begin(), vec1.end(), cmp1);
  for (int i = 0; i < (int)vec1.size(); i++) {
    if (i == 0 || vec1[i] != vec1[i - 1]) {
      vec.push_back(vec1[i]);
    }
  }
  vec.push_back({0, 0});
  int it = 0;
  vector<Point> con;
  for (int i = 0; i < (int)vec.size(); i++) {
    Point A = vec[i];
    int sz = con.size();
    if (sz <= 1) {
      con.push_back(A);
      continue;
    }
    Point B = con[sz - 1];
    Point C = con[sz - 2];
    B = B - C;
    A = A - C;
    while (B.vec(A) < 0 || (B.vec(A) == 0 && B.len() < A.len())) {
      con.pop_back();
      sz = con.size();
      if (sz <= 1) break;
      A = v[i];
      B = con[sz - 1];
      C = con[sz - 2];
      B = B - C;
      A = A - C;
    }
    con.push_back(vec[i]);
  }
  con.pop_back();
  int m;
  cin >> m;
  for (int i = 1; i <= m; i++) {
    Point A;
    A.Scan();
    A.x = A.x * 3;
    A.y = A.y * 3;
    A = A - T;
    A = A - M1;
    if (con[1].vec(A) < 0 || con.back().vec(A) > 0) {
      cout << "NO\n";
      continue;
    }
    int l = 0, r = con.size();
    while (r - l > 1) {
      int mid = (l + r) / 2;
      if (con[mid].vec(A) <= 0) {
        r = mid;
      } else {
        l = mid;
      }
    }
    if (r == con.size()) {
      r--;
      l--;
    }
    if (l == 0) {
      r++;
      l++;
    }
    Point B = con[l];
    Point C = con[r];
    Point T = Point(0, 0);
    A = A - C;
    B = B - C;
    T = T - C;
    long long vec1 = B.vec(A);
    long long vec2 = B.vec(T);
    if (vec1 == 0) {
      cout << "YES\n";
      continue;
    }
    if ((vec1 < 0 && vec2 < 0) || (vec1 > 0 && vec2 > 0)) {
      cout << "YES\n";
      continue;
    }
    cout << "NO\n";
  }
}
