#include <bits/stdc++.h>
using namespace std;
struct vec {
  long long x, y;
  int id;
  vec(long long a = 0, long long b = 0) : x(a), y(b) {}
  vec operator+(const vec &o) const { return {x + o.x, y + o.y}; }
  vec operator-(const vec &o) const { return {x - o.x, y - o.y}; }
  long long operator*(const vec &o) const { return x * o.x + y * o.y; }
  long long operator^(const vec &o) const { return x * o.y - y * o.x; }
  bool operator<(const vec &o) const {
    if (x != o.x) return x < o.x;
    return y < o.y;
  }
  long long cross(const vec &a, const vec &b) const {
    return (a - (*this)) ^ (b - (*this));
  }
  long long dot(const vec &a, const vec &b) const {
    return (a - (*this)) * (b - (*this));
  }
  int ccw(const vec &a, const vec &b) const {
    long long tmp = cross(a, b);
    return (tmp > 0) - (tmp < 0);
  }
};
const int N = 1000006;
vector<vec> mink(vector<vec> a, vector<vec> b) {
  int q = 0, w = 0;
  for (int i = 0; i < (int)a.size(); i++)
    if (a[i] < a[q]) q = i;
  for (int i = 0; i < (int)b.size(); i++)
    if (b[i] < b[w]) w = i;
  vector<vec> c;
  c.reserve(a.size() + b.size());
  vec pt;
  for (int i = 0; i < int(a.size() + b.size()); i++) {
    pt = a[q] + b[w];
    if ((int)c.size() >= 2 && !c[c.size() - 2].ccw(c.back(), pt)) c.pop_back();
    c.push_back(pt);
    int qq = q + 1, ww = w + 1;
    if (qq == int(a.size())) qq = 0;
    if (ww == int(b.size())) ww = 0;
    if (c.back().ccw(a[q] + b[ww], a[qq] + b[w]) == -1)
      q = qq;
    else
      w = ww;
  }
  return c;
}
vec lo[N], hi[N];
int nl, nh;
bool below(vec p) {
  auto it = lower_bound(hi, hi + nh, p);
  if (it == hi) return p.x == hi[0].x && p.y == hi[0].y;
  if (it == hi + nh) return false;
  return prev(it)->cross(*it, p) <= 0;
}
bool above(vec p) {
  auto it = lower_bound(lo, lo + nl, p);
  if (it == lo) return p.x == lo[0].x && p.y == lo[0].y;
  if (it == lo + nl) return false;
  return prev(it)->cross(*it, p) >= 0;
}
bool inside(vec p) { return below(p) && above(p); }
bool inside(const vector<vec> &v, vec p) {
  if (v[0].ccw(v[1], p) < 0) return false;
  if (v[0].ccw(v.back(), p) > 0) return 0;
  if (v[0].ccw(v.back(), p) == 0) {
  }
  int L = 1, R = (int)v.size() - 1, ans = 1;
  while (L <= R) {
    int mid = (L + R) / 2;
    if (v[0].ccw(v[mid], p) >= 0)
      ans = mid, L = mid + 1;
    else
      R = mid - 1;
  }
  return v[ans].ccw(v[(ans + 1) % v.size()], p) >= 0;
}
int main() {
  vector<vec> a, b;
  int n, m;
  scanf("%d", &n);
  a.resize(n);
  for (int i = 0; i < n; i++) scanf("%lld %lld", &a[i].x, &a[i].y);
  scanf("%d", &m);
  b.resize(m);
  for (int i = 0; i < m; i++) scanf("%lld %lld", &b[i].x, &b[i].y);
  a = mink(a, b);
  scanf("%d", &m);
  b.resize(m);
  for (int i = 0; i < m; i++) scanf("%lld %lld", &b[i].x, &b[i].y);
  a = mink(a, b);
  n = (int)a.size();
  {
    int j = 2;
    for (int i = 2; i < (int)a.size(); i++) {
      if (a[j - 2].cross(a[j - 1], a[i]) == 0) j--;
      a[j++] = a[i];
    }
    if (a[j - 2].cross(a[j - 1], a[0]) == 0) j--;
    a.resize(j);
    n = j;
  }
  {
    int w = 0, e = 0;
    for (int i = 0; i < n; i++) {
      if (a[i] < a[w]) w = i;
      if (a[e] < a[i]) e = i;
    }
    for (int i = w;; i++) {
      if (i == n) i = 0;
      lo[nl++] = a[i];
      if (i == e) break;
    }
    for (int i = e;; i++) {
      if (i == n) i = 0;
      hi[nh++] = a[i];
      if (i == w) break;
    }
    reverse(hi, hi + nh);
  }
  int q;
  scanf("%d", &q);
  vec v;
  while (q--) {
    scanf("%lld %lld", &v.x, &v.y);
    v.x *= 3;
    v.y *= 3;
    printf("%s\n", inside(v) ? "YES" : "NO");
  }
}
