#include <bits/stdc++.h>
using namespace std;
vector<complex<long long> > read() {
  int n;
  cin >> n;
  vector<complex<long long> > p(n);
  for (int i = 0; i < n; ++i) {
    long long x, y;
    cin >> x >> y;
    p[i] = complex<long long>(x, y);
  }
  return p;
}
void print(vector<complex<long long> > p) {
  for (auto pp : p) cout << pp << endl;
}
long long cross(complex<long long> a, complex<long long> b) {
  return imag(conj(a) * b);
}
namespace std {
bool operator<(complex<long long> a, complex<long long> b) {
  if (a.real() != b.real()) return a.real() < b.real();
  return a.imag() < b.imag();
}
}  // namespace std
vector<complex<long long> > minkowski(vector<complex<long long> > &A,
                                      vector<complex<long long> > &B) {
  int na = (int)A.size(), nb = (int)B.size();
  if (A.empty() || B.empty()) return vector<complex<long long> >();
  rotate(A.begin(), min_element(A.begin(), A.end()), A.end());
  rotate(B.begin(), min_element(B.begin(), B.end()), B.end());
  int pa = 0, pb = 0;
  vector<complex<long long> > M;
  while (pa < na && pb < nb) {
    M.push_back(A[pa] + B[pb]);
    double x = cross(A[(pa + 1) % na] - A[pa], B[(pb + 1) % nb] - B[pb]);
    if (x <= 0) pb++;
    if (0 <= x) pa++;
  }
  while (pa < na) M.push_back(A[pa++] + B[0]);
  while (pb < nb) M.push_back(B[pb++] + A[0]);
  return M;
}
struct convex_container {
  vector<complex<long long> > pol;
  convex_container(vector<complex<long long> > p) : pol(p) {
    int pos = 0;
    for (int i = 1; i < p.size(); ++i) {
      if (p[i].imag() < p[pos].imag() ||
          (p[i].imag() == p[pos].imag() && p[i].real() < p[pos].real()))
        pos = i;
    }
    rotate(pol.begin(), pol.begin() + pos, pol.end());
  }
  bool contains(complex<long long> p) {
    complex<long long> c = pol[0];
    if (p.imag() < c.imag() || cross(pol.back() - c, p - c) > 0) return false;
    int lo = 1, hi = pol.size() - 1;
    while (lo + 1 < hi) {
      int m = (lo + hi) / 2;
      if (cross(pol[m] - c, p - c) >= 0)
        lo = m;
      else
        hi = m;
    }
    return cross(pol[lo + 1] - pol[lo], p - pol[lo]) >= 0;
  }
};
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  vector<vector<complex<long long> > > cities(3);
  for (int i = 0; i < 3; ++i) cities[i] = read();
  cities[0] = minkowski(cities[0], cities[1]);
  cities[0] = minkowski(cities[0], cities[2]);
  convex_container cc(cities[0]);
  int q;
  cin >> q;
  while (q--) {
    long long x, y;
    cin >> x >> y;
    complex<long long> p(x, y);
    if (cc.contains(p * 3LL))
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  }
  return 0;
}
