#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  int polyIdx;
  Point() {}
  Point(long long xx, long long yy, int id) { x = xx, y = yy, polyIdx = id; }
};
bool cmp(Point a, Point b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
int n, m;
long long cross(Point& a, Point& b, Point& c) {
  return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
}
vector<Point> convex_hull(vector<Point> poly) {
  int n = poly.size();
  vector<Point> H(2 * n);
  sort(poly.begin(), poly.end(), cmp);
  int k = 0;
  for (int i = 0; i < n; i++) {
    while (k >= 2 && cross(H[k - 2], H[k - 1], poly[i]) < 0) k--;
    H[k++] = poly[i];
  }
  for (int i = n - 2, t = k + 1; i >= 0; i--) {
    while (k >= t && cross(H[k - 2], H[k - 1], poly[i]) < 0) k--;
    H[k++] = poly[i];
  }
  H.resize(k);
  return H;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  while (cin >> n) {
    vector<Point> poly;
    for (int i = 0; i < n; i++) {
      int xx, yy;
      cin >> xx >> yy;
      poly.push_back(Point(xx, yy, 1));
    }
    cin >> m;
    for (int i = 0; i < m; i++) {
      int xx, yy;
      cin >> xx >> yy;
      poly.push_back(Point(xx, yy, 2));
    }
    poly = convex_hull(poly);
    bool ok = true;
    for (int i = 0; i < poly.size(); i++) {
      if (poly[i].polyIdx == 2) {
        ok = false;
        break;
      }
    }
    puts(ok ? "YES" : "NO");
  }
  return 0;
}
