#include <bits/stdc++.h>
using namespace std;
const int max_n = 100005;
const double eps = 1e-10;
int n, m;
struct point {
  double xc, yc;
  point() {}
  point(double xc_, double yc_) {
    xc = xc_;
    yc = yc_;
  }
};
point operator+(const point &a, const point &b) {
  return point(a.xc + b.xc, a.yc + b.yc);
}
point operator-(const point &a, const point &b) {
  return point(a.xc - b.xc, a.yc - b.yc);
}
double operator*(const point &a, const point &b) {
  return (a.xc * b.xc + a.yc * b.yc);
}
double operator^(const point &a, const point &b) {
  return (a.xc * b.yc - a.yc * b.xc);
}
bool leftturn(point X1, point X2, point X3) {
  return ((X2 - X1) ^ (X3 - X2)) > 0;
}
bool rightturn(point X1, point X2, point X3) {
  return ((X2 - X1) ^ (X3 - X2)) < 0;
}
point P[max_n], Q;
bool func(int Z) { return leftturn(P[0], P[Z + 2], Q); }
int binsrc(int l, int r) {
  if (l + 1 == r) return r;
  int mid = (l + r) / 2;
  if (func(mid)) return binsrc(l, mid);
  return binsrc(mid, r);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%lf%lf", &P[i].xc, &P[i].yc);
  scanf("%d", &m);
  bool res = 1;
  for (int i = 0; i < m; i++) {
    scanf("%lf%lf", &Q.xc, &Q.yc);
    if (!rightturn(P[0], P[1], Q) or !leftturn(P[0], P[n - 1], Q)) {
      res = 0;
      break;
    }
    int j = binsrc(-1, n - 3);
    if (!leftturn(P[j + 2], P[j + 1], Q)) {
      res = 0;
      break;
    }
  }
  if (res)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
