#include <bits/stdc++.h>
using namespace std;
pair<int, int> operator+(const pair<int, int>& a, const pair<int, int>& b) {
  return pair<int, int>(a.first + b.first, a.second + b.second);
}
pair<int, int> operator-(const pair<int, int>& a, const pair<int, int>& b) {
  return pair<int, int>(a.first - b.first, a.second - b.second);
}
long long productVect(const pair<int, int>& a, const pair<int, int>& b) {
  long long A = a.first;
  long long B = a.second;
  long long C = b.first;
  long long D = b.second;
  return A * D - B * C;
}
bool pii_comp_x(const pair<int, int>& a, const pair<int, int>& b) {
  return a.first < b.first;
}
int underChain(const vector<pair<int, int> >& chn, const pair<int, int>& pnt) {
  if (chn[0].first > pnt.first || chn.back().first < pnt.first) return 0;
  int i = lower_bound(chn.begin(), chn.end(), pnt, pii_comp_x) - chn.begin();
  if (i) --i;
  return (productVect(chn[i + 1] - chn[i], pnt - chn[i]) <= 0);
}
void convex_minko_sum(const vector<pair<int, int> >& a,
                      const vector<pair<int, int> >& b,
                      vector<pair<int, int> >& out) {
  out.clear();
  int i = 0, j = 0;
  for (int q = 0; q < a.size(); ++q)
    if (a[q] < a[i]) i = q;
  for (int q = 0; q < b.size(); ++q)
    if (b[q] < b[j]) j = q;
  do {
    out.push_back(a[i] + b[j]);
    long long pro =
        productVect(a[(i + 1) % a.size()] - a[i], b[(j + 1) % b.size()] - b[j]);
    if (pro >= 0) i = (i + 1) % a.size();
    if (pro <= 0) j = (j + 1) % b.size();
  } while (a[i] + b[j] != out[0]);
}
int main() {
  vector<pair<int, int> > T[5];
  for (int q = 0; q < 3; ++q) {
    int sz;
    scanf("%d", &sz);
    for (int w = 0; w < sz; ++w) {
      pair<int, int> u;
      scanf("%d %d", &u.first, &u.second);
      T[q].push_back(u);
    }
  }
  convex_minko_sum(T[0], T[1], T[3]);
  convex_minko_sum(T[2], T[3], T[4]);
  vector<pair<int, int> > up, down;
  for (int q = 0; q < T[4].size(); ++q) {
    pair<int, int> a = T[4][q];
    pair<int, int> b = T[4][(q + 1) % T[4].size()];
    if (a.first < b.first) {
      if (down.empty() || down.back() != a) down.push_back(a);
      down.push_back(b);
    }
    if (a.first > b.first) {
      if (up.empty() || up.back() != a) up.push_back(a);
      up.push_back(b);
    }
  }
  reverse(up.begin(), up.end());
  for (int q = 0; q < down.size(); ++q) down[q].second *= -1;
  int Quest;
  scanf("%d", &Quest);
  for (int q = 0; q < Quest; ++q) {
    int a, b;
    scanf("%d %d", &a, &b);
    a *= 3, b *= 3;
    printf("%s\n", (underChain(up, pair<int, int>(a, b)) &&
                    underChain(down, pair<int, int>(a, -b)))
                       ? "YES"
                       : "NO");
  }
  return 0;
}
