#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-8;
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0) return -1;
  return 1;
}
struct Point {
  double x, y;
  Point() {}
  Point(double x_, double y_) {
    x = x_;
    y = y_;
  }
  Point operator-(const Point &t) const { return Point(x - t.x, y - t.y); }
  Point operator+(const Point &t) const { return Point(x + t.x, y + t.y); }
  double operator^(const Point &t) const { return x * t.y - t.x * y; }
  double operator*(const Point &t) const { return x * t.x + y * t.y; }
  Point operator*(const double &t) const { return Point(x * t, y * t); }
  Point operator/(const double &t) const { return Point(x / t, y / t); }
  bool operator==(const Point &t) const {
    return !sgn(x - t.x) && !sgn(y - t.y);
  }
  bool operator<(const Point &t) {
    if (!sgn(y - t.y)) return x < t.x;
    return y < t.y;
  }
  double len() { return sqrt(x * x + y * y); }
  double len2() { return x * x + y * y; }
  void input() { scanf("%lf%lf", &x, &y); }
  void output() { printf("%.2f %.2f\n", (double)x, (double)y); }
  friend double dist(const Point &a, const Point &b) {
    return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
  }
  void normal() {
    double Len = len();
    x /= Len, y /= Len;
  }
  Point rotleft() { return Point(-y, x); }
  Point rotright() { return Point(y, -x); }
  Point rotate(Point p, double angle) {
    Point v = (*this) - p;
    double c = cos(angle), s = sin(angle);
    return Point(p.x + v.x * c - v.y * s, p.y + v.x * s + v.y * c);
  }
} p[1000010];
bool ConvexContain(Point *p, int n, Point now) {
  if (sgn((p[1] - p[0]) ^ (now - p[0])) <= 0) return false;
  if (sgn((p[n - 1] - p[0]) ^ (now - p[0])) >= 0) return false;
  int l = 1, r = n - 1;
  while (l < r) {
    int mid = (l + r + 1) >> 1;
    if (sgn((p[mid] - p[0]) ^ (now - p[0])) >= 0)
      l = mid;
    else
      r = mid - 1;
  }
  return sgn((p[l + 1] - p[l]) ^ (now - p[l])) > 0;
}
int main() {
  int n, m;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) p[i].input();
  reverse(p, p + n);
  p[n] = p[0];
  scanf("%d", &m);
  bool flag = true;
  while (m--) {
    Point now;
    now.input();
    if (flag && !ConvexContain(p, n, now)) flag = false;
  }
  puts(flag ? "YES" : "NO");
  return 0;
}
