#include <bits/stdc++.h>
using namespace std;
int const N = 50000;
struct P {
  long long x, y;
  P() : x(0), y(0) {}
  P(long long a, long long b) : x(a), y(b) {}
  void sc() { scanf("%lld%lld", &x, &y); }
  P operator+(P const &o) const { return P(x + o.x, y + o.y); }
  P operator-(P const &o) const { return P(x - o.x, y - o.y); }
  P operator*(int s) const { return P(x * s, y * s); }
  double ang() const { return atan2(y, x); }
  bool operator<(P const &o) const { return ang() < o.ang(); }
  long long operator|(P const &o) const { return x * o.y - y * o.x; }
  bool operator==(P const &o) const { return (*this | o) == 0; }
} p[N], b;
vector<P> h;
void sc() {
  int n, l = h.size(), mn = 0;
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); ++i) p[i].sc();
  for (int i = 1; i < (int)(n); ++i)
    if (p[i].y > p[mn].y || p[i].y == p[mn].y && p[i].x < p[mn].x) mn = i;
  for (int i = mn; i < (int)(n); ++i) h.push_back(p[i]);
  for (int i = 0; i < (int)(mn); ++i) h.push_back(p[i]);
  P t = h[l];
  b = b + t;
  for (int i = l; i < (int)(h.size() - 1); ++i) h[i] = h[i + 1] - h[i];
  h.back() = t - h.back();
  inplace_merge(h.begin(), h.begin() + l, h.end());
  int j = 0;
  for (int i = 1; i < (int)(h.size()); ++i)
    if (h[j] | h[i])
      swap(h[++j], h[i]);
    else
      h[j] = h[j] + h[i];
  h.resize(j + 1);
}
bool in(P const &o) {
  int l = 0, r = h.size() - 1;
  while (r > l) {
    int m = l + r + 1 >> 1;
    if ((o - h[0] | h[m] - h[0]) >= 0)
      r = m - 1;
    else
      l = m;
  }
  if (l + 1 == h.size()) return false;
  if (l == 0 && (h[1] - h[0] | o - h[0]) == 0)
    return (h[2] - h[1] | o - h[1]) >= 0;
  return (h[l + 1] - h[l] | o - h[l]) >= 0;
}
int main() {
  for (int i = 0; i < (int)(3); ++i) sc();
  P t = h[0];
  h[0] = b;
  for (int i = 1; i < (int)(h.size()); ++i) {
    P tt = h[i];
    h[i] = t + h[i - 1];
    t = tt;
  }
  int m;
  scanf("%d", &m);
  while (m--) {
    P p;
    p.sc();
    printf("%s\n", in(p * 3) ? "YES" : "NO");
  }
}
