#include <bits/stdc++.h>
using namespace std;
long long int mod = 1e9 + 7;
const double error = 1e-7;
const double PI = acos(-1);
mt19937 rng(
    (unsigned int)chrono::system_clock::now().time_since_epoch().count());
inline long long int MOD(long long int x, long long int m = mod) {
  long long int y = x % m;
  return (y >= 0) ? y : y + m;
}
const int inf = 1e9 + 2;
const long long int infl = 1e18 + 1;
const int nmax = 1e5 + 5;
bool operator==(complex<long long int> p, complex<long long int> q) {
  return (p.real() == q.real()) && (p.imag() == q.imag());
}
bool lexcomp(const complex<long long int> &p, const complex<long long int> &q) {
  return make_pair(p.real(), p.imag()) < make_pair(q.real(), q.imag());
}
complex<long long int> origin, ray;
inline bool half(complex<long long int> p) {
  return ((conj(ray) * (p)).imag()) < 0 ||
         (((conj(ray) * (p)).imag()) == 0 && ((conj(ray) * (p)).real()) > 0);
}
bool polarComp(complex<long long int> p, complex<long long int> q) {
  p -= origin;
  q -= origin;
  return make_tuple(half(p), 0) < make_tuple(half(q), ((conj(p) * (q)).imag()));
}
void MinkowskiSum(vector<complex<long long int> > &A,
                  vector<complex<long long int> > &B,
                  vector<complex<long long int> > &C) {
  int n = A.size(), m = B.size();
  vector<complex<long long int> > P(n), Q(m);
  complex<long long int> st = A[0] + B[0];
  for (int i = 0; i + 1 < n; i++) P[i] = A[i + 1] - A[i];
  P[n - 1] = A[0] - A[n - 1];
  for (int i = 0; i + 1 < m; i++) Q[i] = B[i + 1] - B[i];
  Q[m - 1] = B[0] - B[m - 1];
  origin = complex<long long int>(0, 0), ray = complex<long long int>(0, -1);
  C.resize(n + m + 1);
  merge(P.begin(), P.end(), Q.begin(), Q.end(), C.begin() + 1, polarComp);
  C[0] = st;
  for (int i = 1; i < C.size(); i++) C[i] += C[i - 1];
  assert(C[0] == C.back());
  C.pop_back();
}
long long int PointInPoly(complex<long long int> p,
                          vector<complex<long long int> > &poly, int top) {
  if (lexcomp(p, poly[0]) || lexcomp(poly[top], p)) return -1;
  auto o = ((conj((poly[top]) - (poly[0])) * ((p) - (poly[0]))).imag());
  if (o == 0) {
    return (p == poly[0] || p == poly[top] || top == 1 ||
            top + 1 == poly.size())
               ? 0
               : 1;
  } else if (o < 0) {
    auto it = lower_bound(poly.begin(), poly.begin() + top, p, lexcomp);
    return ((conj((it[0]) - (it[-1])) * ((p) - (it[-1]))).imag());
  } else {
    auto it = upper_bound(poly.rbegin(), poly.rend() - top - 1, p, lexcomp);
    return ((conj((it[0]) - (p)) *
             (((it == poly.rbegin()) ? poly[0] : it[-1]) - (p)))
                .imag());
  }
}
vector<complex<long long int> > poly[3], sum;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  for (int i = 0; i < 3; i++) {
    int n;
    cin >> n;
    poly[i].resize(n);
    for (int j = 0; j < n; j++) {
      long long int x, y;
      cin >> x >> y;
      poly[i][j] = complex<long long int>(x, y);
    }
    auto it = min_element(poly[i].begin(), poly[i].end(), lexcomp);
    rotate(poly[i].begin(), it, poly[i].end());
  }
  MinkowskiSum(poly[0], poly[1], sum);
  MinkowskiSum(sum, poly[2], sum);
  int top = max_element(sum.begin(), sum.end(), lexcomp) - sum.begin();
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    long long int x, y;
    cin >> x >> y;
    complex<long long int> p(x, y);
    p *= 3;
    if (PointInPoly(p, sum, top) < 0)
      cout << "NO\n";
    else
      cout << "YES\n";
  }
}
