#include <bits/stdc++.h>
using namespace std;
const int N = 2e5;
struct P {
  long long x, y;
  bool a;
  P() {}
  P(long long _x, long long _y, bool _a) : x(_x), y(_y), a(_a) {}
  long long operator^(const P &t) const { return x * t.y - y * t.x; }
  bool operator<(const P &t) const {
    if (y == t.y) return x < t.x;
    return y < t.y;
  }
  P operator-(const P &t) const { return P(x - t.x, y - t.y, 0); }
} p[N];
int n, m;
bool flag[N];
int st[N], tops;
void granhamScan() {
  st[0] = 0;
  tops = 1;
  for (int i = 1; i < m; ++i) {
    while (tops >= 2 && ((p[st[tops - 1]] - p[st[tops - 2]]) ^
                         (p[i] - p[st[tops - 1]])) < 0) {
      flag[st[tops - 1]] = false;
      tops--;
    }
    st[tops++] = i;
    flag[i] = true;
  }
  for (int i = m - 1; i >= 0; --i) {
    if (flag[i]) continue;
    while (tops >= 2 && ((p[st[tops - 1]] - p[st[tops - 2]]) ^
                         (p[i] - p[st[tops - 1]])) < 0) {
      flag[st[tops - 1]] = false;
      tops--;
    }
    st[tops++] = i;
    flag[i] = true;
  }
}
bool check() {
  for (int i = 0; i < tops; ++i) {
    if (!p[st[i]].a) return 0;
  }
  return 1;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    p[i] = P(x, y, 1);
  }
  scanf("%d", &m);
  m += n;
  for (int i = n; i < m; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    p[i] = P(x, y, 0);
  }
  sort(p, p + m);
  p[m] = p[0];
  granhamScan();
  if (check())
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
