#include <bits/stdc++.h>
using namespace std;
pair<int, int> operator-(const pair<int, int> &a, const pair<int, int> &b) {
  pair<int, int> res = a;
  res.first -= b.first;
  res.second -= b.second;
  return res;
}
pair<int, int> operator+(const pair<int, int> &a, const pair<int, int> &b) {
  pair<int, int> res = a;
  res.first += b.first;
  res.second += b.second;
  return res;
}
bool cmp_by_angle(const pair<int, int> &a, const pair<int, int> &b) {
  if (!a.first && !a.second) return false;
  if (!b.first && !b.second) return false;
  return atan2(-a.first, a.second) < atan2(-b.first, b.second);
}
bool cmp_angle(const pair<int, int> &a, const pair<int, int> &b) {
  if (a.first == 0 && b.first == 0) return a.second < b.second;
  return a.second * 1ll * b.first < a.first * 1ll * b.second;
}
long long sqeare(const pair<int, int> &a, const pair<int, int> &b,
                 const pair<int, int> &c) {
  return a.first * 1ll * (b.second - c.second) +
         b.first * 1ll * (c.second - a.second) +
         c.first * 1ll * (a.second - b.second);
}
int main() {
  vector<pair<int, int> > points[3];
  pair<int, int> check = make_pair(-1000000001, -1000000001);
  for (int _n(3), i(0); i < _n; i++) {
    int N;
    cin >> N;
    points[i].clear();
    for (int _n(N), k(0); k < _n; k++) {
      int x, y;
      cin >> x >> y;
      if (check.first == -1000000001) check = make_pair(x, y);
      points[i].push_back(make_pair(x, y));
    }
  }
  vector<pair<int, int> > edges;
  for (int _n(3), k(0); k < _n; k++) {
    const int N = points[k].size();
    for (int _n(N), i(0); i < _n; i++) {
      if (points[k][(i + 1) % N] == points[k][i]) continue;
      edges.push_back(points[k][(i + 1) % N] - points[k][i]);
    }
  }
  sort((edges).begin(), (edges).end(), &cmp_by_angle);
  vector<pair<int, int> > MinkovskySumPolygon;
  {
    pair<int, int> frst = make_pair(0, 0);
    for (int _n(3), i(0); i < _n; i++) {
      frst = frst + *min_element((points[i]).begin(), (points[i]).end());
    }
    pair<int, int> prev = frst, next = frst;
    for (int _n(edges.size()), i(0); i < _n; i++) {
      next = prev + edges[i];
      MinkovskySumPolygon.push_back(next);
      prev = next;
    }
    if (MinkovskySumPolygon.back() != frst) {
      cout << frst.first << ' ' << frst.second << ' '
           << MinkovskySumPolygon.back().first << ' '
           << MinkovskySumPolygon.back().second << endl;
      assert(MinkovskySumPolygon.back() == frst);
    }
  }
  if (MinkovskySumPolygon.size() < 3) {
    cout << "MinkovskySumPolygon size less than 3" << endl;
    assert(MinkovskySumPolygon.size() < 3);
  }
  {
    vector<pair<int, int> > tmp;
    tmp.push_back(MinkovskySumPolygon.back());
    tmp.push_back(MinkovskySumPolygon[0]);
    for (int i = 1; i < (int)MinkovskySumPolygon.size(); ++i) {
      while (tmp.size() >= 2 && sqeare(tmp[tmp.size() - 2], tmp[tmp.size() - 1],
                                       MinkovskySumPolygon[i]) == 0)
        tmp.pop_back();
      tmp.push_back(MinkovskySumPolygon[i]);
    }
    if (tmp[0] == tmp.back()) tmp.pop_back();
    tmp.swap(MinkovskySumPolygon);
  }
  pair<int, int> base_pnt;
  {
    vector<pair<int, int> >::iterator it =
        min_element((MinkovskySumPolygon).begin(), (MinkovskySumPolygon).end());
    base_pnt = *it;
    rotate(MinkovskySumPolygon.begin(), it, MinkovskySumPolygon.end());
    MinkovskySumPolygon.erase(MinkovskySumPolygon.begin());
  }
  vector<pair<int, int> > angles;
  for (int _n(MinkovskySumPolygon.size()), i(0); i < _n; i++) {
    pair<int, int> angle = MinkovskySumPolygon[i] - base_pnt;
    if (angle.first == 0) angle.second = angle.second > 0 ? 1 : -1;
    angles.push_back(angle);
  }
  int city_cnt;
  cin >> city_cnt;
  for (int _n(city_cnt), query(0); query < _n; query++) {
    pair<int, int> q;
    cin >> q.first >> q.second;
    q.first *= 3, q.second *= 3;
    bool inside = false;
    if (q.first >= base_pnt.first) {
      if (base_pnt == q)
        inside = true;
      else {
        pair<int, int> angle = q - base_pnt;
        if (angle.first == 0) {
          angle.second = angle.second > 0 ? 1 : -1;
        }
        vector<pair<int, int> >::iterator where =
            upper_bound((angles).begin(), (angles).end(), angle, &cmp_angle);
        if (where == angles.end() && angle == angles.back())
          where = angles.end() - 1;
        if (where != angles.end() && where != angles.begin()) {
          int ind = where - angles.begin();
          inside = sqeare(MinkovskySumPolygon[ind - 1],
                          MinkovskySumPolygon[ind], q) >= 0;
        }
      }
    }
    cout << (inside ? "YES" : "NO") << endl;
  }
  return 0;
}
