#include <bits/stdc++.h>
using namespace std;
struct P_type {
  long long x, y;
  int id;
  P_type() : x(0), y(0), id(0) {}
  P_type(long long a, long long b, int c) : x(a), y(b), id(c) {}
  P_type operator-(const P_type &p) { return P_type(x - p.x, y - p.y, 0); }
  long long operator*(const P_type &p) { return x * p.y - y * p.x; }
  friend bool operator<(P_type p, P_type q) {
    return p.x < q.x || p.x == q.x && p.y < q.y;
  }
} P[120010], sta[120010];
int n, m, top;
void init() {
  int x, y;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x, &y);
    P[i] = P_type(x, y, 0);
  }
  scanf("%d", &m);
  for (int i = n + 1; i <= n + m; i++) {
    scanf("%d%d", &x, &y);
    P[i] = P_type(x, y, 1);
  }
  n += m;
}
void solve() {
  sort(P + 1, P + n + 1);
  top = 2;
  sta[1] = P[1];
  sta[2] = P[2];
  for (int i = 3; i <= n; i++) {
    while (top >= 2 && (P[i] - sta[top - 1]) * (sta[top] - sta[top - 1]) > 0)
      top--;
    if (sta[top].x != P[i].x || sta[top].y != P[i].y)
      sta[++top] = P[i];
    else
      sta[top].id = 1;
  }
  for (int i = n - 1; i >= 1; i--) {
    while (top >= 2 && (P[i] - sta[top - 1]) * (sta[top] - sta[top - 1]) > 0)
      top--;
    if (sta[top].x != P[i].x || sta[top].y != P[i].y)
      sta[++top] = P[i];
    else
      sta[top].id = 1;
  }
  bool flag = true;
  for (int i = 1; i <= top; i++)
    if (sta[i].id) {
      flag = false;
      break;
    }
  if (flag)
    printf("YES\n");
  else
    printf("NO\n");
}
int main() {
  init();
  solve();
  return 0;
}
