#include <bits/stdc++.h>
using namespace std;
int n, m;
struct point {
  long long x, y;
};
point p[150000], ch[150000], ch2[150000];
point operator-(point a, point b) {
  point ans;
  ans.x = a.x - b.x;
  ans.y = a.y - b.y;
  return ans;
}
bool operator<(const point& a, const point& b) {
  return a.x < b.x || (a.x == b.x && a.y < b.y);
}
bool operator==(const point& a, const point& b) {
  return (a.x == b.x && a.y == b.y);
}
long long cross(point a, point b) { return (a.x * b.y - a.y * b.x); }
int convexHull() {
  sort(p, p + (n + m));
  int tans = 0;
  for (int i = 0; i < n + m; i++) {
    while (tans > 1 &&
           cross(ch[tans - 1] - ch[tans - 2], p[i] - ch[tans - 2]) < 0)
      tans--;
    ch[tans++] = p[i];
  }
  int k = tans;
  for (int i = n + m - 2; i >= 0; i--) {
    while (tans > k &&
           cross(ch[tans - 1] - ch[tans - 2], p[i] - ch[tans - 2]) < 0)
      tans--;
    ch[tans++] = p[i];
  }
  tans--;
  return tans;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%I64d%I64d", &p[i].x, &p[i].y);
    ch2[i].x = p[i].x;
    ch2[i].y = p[i].y;
  }
  scanf("%d", &m);
  for (int i = n; i < n + m; i++) {
    scanf("%I64d%I64d", &p[i].x, &p[i].y);
  }
  int num = convexHull();
  if (num != n) {
    printf("NO\n");
  } else {
    sort(ch, ch + n);
    sort(ch2, ch2 + n);
    int flag = 0;
    for (int i = 0; i < n; i++) {
      if (!(ch[i] == ch2[i])) {
        flag = 1;
        printf("NO\n");
        break;
      }
    }
    if (!flag) printf("YES\n");
  }
  return 0;
}
