#include <bits/stdc++.h>
using namespace std;
int n, m;
struct Vex {
  long long x, y;
} pa[100004], pb[20004];
long long operator*(Vex A, Vex B) { return A.x * B.y - A.y * B.x; }
Vex operator-(Vex A, Vex B) {
  Vex t;
  t.x = A.x - B.x;
  t.y = A.y - B.y;
  return t;
}
long long dis(Vex A, Vex B) {
  return (A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y);
}
inline bool dex(Vex A, Vex B) {
  long long sv = (A - pa[1]) * (B - pa[1]);
  if (sv == 0) return dis(A, pa[1]) < dis(B, pa[1]);
  return sv < 0;
}
int For_unc(Vex G) {
  int l = 2, r = n, ans = -1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if ((G - pa[1]) * (pa[mid] - pa[1]) <= 0) {
      ans = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  return ans;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%I64d%I64d", &pa[i].x, &pa[i].y);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) scanf("%I64d%I64d", &pb[i].x, &pb[i].y);
  int t = 1;
  for (int i = 1; i <= n; i++)
    if (pa[i].y < pa[t].y || (pa[i].y == pa[i].y && pa[i].x < pa[t].x)) t = i;
  swap(pa[1], pa[t]);
  sort(pa + 2, pa + n + 1, dex);
  for (int i = 1; i <= m; i++) {
    int st = For_unc(pb[i]);
    if (st == 2) return puts("NO"), 0;
    Vex Gr = pa[st], Gl = pa[st - 1];
    if ((pb[i] - Gl) * (Gr - Gl) <= 0) return puts("NO"), 0;
    if (st - 1 == 2) {
      if ((Gl - pa[1]) * (pb[i] - pa[1]) == 0) return puts("NO"), 0;
    }
    if (st == m) {
      if ((Gr - pa[1]) * (pb[i] - pa[1]) == 0) return puts("NO"), 0;
    }
  }
  puts("YES");
  return 0;
}
