#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
using ll = long long;
const int N = 2e6 + 15;
using P = pair<int, int>;
ll cross_product(P v1, P v2) {
  return v1.first * (ll)v2.second - v1.second * (ll)v2.first;
}
int main() {
  int n;
  cin >> n;
  vector<P> a(n);
  P xmin = P(INT_MAX, INT_MAX), xmax = P(INT_MIN, INT_MIN);
  int minIdx = 0, maxIdx = 0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i].first >> a[i].second;
    if (xmin > a[i]) {
      xmin = a[i];
      minIdx = i;
    }
    if (xmax < a[i]) {
      xmax = a[i];
      maxIdx = i;
    }
  }
  vector<P> up, down;
  if (a[minIdx].first == a[(minIdx + 1) % n].first) {
    minIdx = (minIdx + 1) % n;
  }
  int itr = minIdx;
  while (a[itr].first != a[maxIdx].first) {
    up.push_back(a[itr++]);
    if (itr >= n) itr = 0;
  }
  up.push_back(a[itr]);
  if (a[itr].first == a[(itr + 1) % n].first) {
    itr = (itr + 1) % n;
  }
  while (a[itr].first != a[minIdx].first) {
    down.push_back(a[itr++]);
    if (itr >= n) itr = 0;
  }
  down.push_back(a[itr]);
  reverse(down.begin(), down.end());
  int m;
  cin >> m;
  int ok = 1;
  for (int j = 0; j < m; ++j) {
    int x, y;
    cin >> x >> y;
    if (!ok) continue;
    if (x <= xmin.first or x >= xmax.first) {
      ok = 0;
      continue;
    }
    auto bs = [&](int which) {
      vector<P> &arr = (which == 0 ? up : down);
      int lo = 0, hi = (int)arr.size() - 1, mid;
      while (lo < hi) {
        mid = (lo + hi) / 2;
        if (x < arr[mid].first) {
          hi = mid;
        } else if (x > arr[mid + 1].first) {
          lo = mid + 1;
        } else {
          break;
        }
      }
      return mid;
    };
    int uIdx = bs(0);
    P p1 = up[uIdx], p2 = up[uIdx + 1];
    if (cross_product(P(p2.first - p1.first, p2.second - p1.second),
                      P(x - p1.first, y - p1.second)) >= 0) {
      ok = 0;
      continue;
    }
    int dIdx = bs(1);
    p1 = down[dIdx];
    p2 = down[dIdx + 1];
    if (cross_product(P(p2.first - p1.first, p2.second - p1.second),
                      P(x - p1.first, y - p1.second)) <= 0) {
      ok = 0;
      continue;
    }
  }
  if (ok)
    cout << "YES\n";
  else
    cout << "NO\n";
  return 0;
}
