#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
long long n, m, dau, cuoi, giua, pos1, pos2, t;
bool kt;
struct point {
  long long x, y;
} p[N], ab, ac, z;
long long ccw(point a, point b, point c) {
  ab = {b.x - a.x, b.y - a.y};
  ac = {c.x - a.x, c.y - a.y};
  return ab.x * ac.y - ab.y * ac.x;
}
long long dis(point a, point b) {
  return (b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y);
}
bool cmp1(point a, point b) { return (a.y < b.y || (a.y == b.y && a.x < b.x)); }
bool cmp2(point b, point c) {
  t = ccw(p[1], b, c);
  return t > 0 || (t == 0 && dis(p[1], b) > dis(p[1], c));
}
bool check(point z) {
  if (ccw(p[1], p[2], z) <= 0) return 0;
  if (ccw(p[n], p[1], z) <= 0) return 0;
  pos1 = pos2 = 0;
  dau = 2;
  cuoi = n;
  while (dau <= cuoi) {
    giua = (dau + cuoi) / 2;
    if (ccw(p[1], p[giua], z) >= 0)
      pos1 = giua, dau = giua + 1;
    else
      cuoi = giua - 1;
  }
  if (pos1 == 0) return 0;
  dau = 2;
  cuoi = n;
  while (dau <= cuoi) {
    giua = (dau + cuoi) / 2;
    if (ccw(p[1], p[giua], z) <= 0)
      pos2 = giua, cuoi = giua - 1;
    else
      dau = giua + 1;
  }
  if (pos2 == 0) return 0;
  if (pos1 == pos2) {
    if (dis(p[1], p[pos1]) <= dis(p[1], z))
      return 0;
    else
      return 1;
  }
  if (ccw(p[pos1], p[pos2], z) <= 0) return 0;
  return 1;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> p[i].x >> p[i].y;
  }
  sort(p + 1, p + 1 + n, cmp1);
  sort(p + 2, p + 1 + n, cmp2);
  cin >> m;
  kt = 1;
  for (int i = 1; i <= m; i++) {
    cin >> z.x >> z.y;
    if (kt == 1)
      if (check(z) == 0) {
        kt = 0;
      }
  }
  if (kt == 1)
    cout << "YES";
  else
    cout << "NO";
}
