#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
pair<int, int> p[maxn], q[maxn], r[maxn];
map<int, int> up, low;
int n, m;
long long det(map<int, int>::iterator a, map<int, int>::iterator b,
              map<int, int>::iterator c) {
  return (long long)(b->first - a->first) * (c->second - a->second) -
         (long long)(b->second - a->second) * (c->first - a->first);
}
long long det(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  return (long long)(b.first - a.first) * (c.second - a.second) -
         (long long)(c.first - a.first) * (b.second - a.second);
}
long long det(int x1, int y1, int x2, int y2, int x3, int y3) {
  return (long long)(x2 - x1) * (y3 - y1) - (long long)(x3 - x1) * (y2 - y1);
}
map<int, int>::iterator operator+(map<int, int>::iterator it, int a) {
  for (; a--;) it++;
  return it;
}
map<int, int>::iterator operator-(map<int, int>::iterator it, int a) {
  for (; a--;) it--;
  return it;
}
void process(pair<int, int> p[], int n) {
  int pos = 0;
  for (int i = 1; i < n; i++)
    if (p[i] < p[pos]) pos = i;
  for (int i = 0; i < n; i++) p[i + n] = p[i];
  for (int i = 0; i < n; i++) p[i] = p[i + pos];
}
bool check(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  long long k = det(a, b, c);
  if (k) return k > 0;
  return (long long)(b.first - a.first) * (b.first - a.first) +
             (long long)(b.second - a.second) * (b.second - a.second) >=
         (long long)(c.first - a.first) * (c.first - a.first) +
             (long long)(c.second - a.second) * (c.second - a.second);
}
void msum(pair<int, int> p[], pair<int, int> q[]) {
  p[n] = p[0];
  q[m] = q[0];
  for (int i = 0, u = 0, v = 0; i < n + m; i++) {
    r[i] = make_pair(p[u].first + q[v].first, p[u].second + q[v].second);
    pair<int, int> a =
        make_pair(p[u].first + q[v + 1].first, p[u].second + q[v + 1].second);
    pair<int, int> b =
        make_pair(p[u + 1].first + q[v].first, p[u + 1].second + q[v].second);
    if (check(r[i], a, b))
      v++;
    else
      u++;
  }
  for (int i = 0; i < n + m; i++) p[i] = r[i];
  n += m;
}
void add(map<int, int> &t, pair<int, int> p) {
  if (t.count(p.first))
    if (t[p.first] >= p.second) return;
  t[p.first] = p.second;
  map<int, int>::iterator it = t.lower_bound(p.first);
  if (it != t.begin() && (it + 1) != t.end() &&
      det((it - 1), it, it + 1) >= 0) {
    t.erase(it->first);
    return;
  }
  if (it != t.begin())
    for (; it - 1 != t.begin() && det(it - 2, it - 1, it) >= 0;)
      t.erase((it - 1)->first);
  if (it + 1 != t.end())
    for (; it + 2 != t.end() && det(it, it + 1, it + 2) >= 0;)
      t.erase((it + 1)->first);
}
bool check(map<int, int> &t, int first, int second) {
  if (t.count(first)) return second <= t[first];
  if (first < t.begin()->first || first > (t.end() - 1)->first) return 0;
  map<int, int>::iterator it = t.lower_bound(first) - 1;
  return det(it->first, it->second, first, second, (it + 1)->first,
             (it + 1)->second) >= 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &p[i].first, &p[i].second);
  for (int k = 0; k < 2; k++) {
    scanf("%d", &m);
    for (int i = 0; i < m; i++) scanf("%d%d", &q[i].first, &q[i].second);
    process(p, n);
    process(q, m);
    msum(p, q);
  }
  sort(p, p + n);
  for (int i = 0; i < n; i++) add(up, p[i]);
  for (int i = 0; i < n; i++) p[i].second *= -1;
  sort(p, p + n);
  for (int i = 0; i < n; i++) add(low, p[i]);
  for (scanf("%d", &m); m--;) {
    int first, second;
    scanf("%d%d", &first, &second);
    first *= 3;
    second *= 3;
    if (check(up, first, second) && check(low, first, -second))
      printf("YES\n");
    else
      printf("NO\n");
  }
}
