#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  int id;
  point(long long x = 0, long long y = 0, int id = 0) : x(x), y(y), id(id) {}
  point operator-(const point &p) { return point(x - p.x, y - p.y); }
};
long long multi(point a, point b) { return a.x * b.y - a.y * b.x; }
point o;
bool cmp(point a, point b) {
  long long t = multi(a - o, b - o);
  if (t) return t > 0;
  return abs(a.x - o.x) < abs(b.x - o.x);
}
point p[121111], h[121111];
int N, M;
bool graham(int n) {
  for (int i = 0; i < n; i++) p[i].id = i;
  for (int i = 1; i < n; i++) {
    if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x)
      swap(p[i], p[0]);
  }
  o = p[0];
  sort(p + 1, p + n, cmp);
  h[0] = p[0], h[1] = p[1];
  int m = 2;
  for (int i = 2; i < n; i++) {
    while (m > 2 && multi(p[i] - h[m - 2], h[m - 1] - h[m - 2]) > 0) m--;
    h[m++] = p[i];
  }
  for (int i = 0; i < m; i++) {
    if (h[i].id >= N) return false;
  }
  return true;
}
int main() {
  scanf("%d", &N);
  for (int i = 0; i < N; i++) scanf("%I64d %I64d", &p[i].x, &p[i].y);
  scanf("%d", &M);
  for (int i = 0; i < M; i++) scanf("%I64d %I64d", &p[N + i].x, &p[N + i].y);
  puts(graham(N + M) ? "YES" : "NO");
  return 0;
}
