#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  bool operator<(const point& p) const {
    return (x < p.x) || (x == p.x && y < p.y);
  }
};
bool lom(point a, point b, point c) {
  long long ax = b.x - a.x, ay = b.y - a.y;
  long long bx = c.x - b.x, by = c.y - b.y;
  if ((ax * by - ay * bx) > 0) {
    return true;
  } else {
    return false;
  }
}
vector<point> convex_hull(vector<point> h) {
  vector<point> up, down, v;
  sort(h.begin(), h.end());
  up.push_back(h[0]);
  down.push_back(h[h.size() - 1]);
  for (int i = 1; i < h.size(); i++) {
    if (up.size() < 2) {
      up.push_back(h[i]);
    } else {
      up.push_back(h[i]);
      long tmp = up.size() - 1;
      while (lom(up[tmp - 2], up[tmp - 1], up[tmp]) && up.size() >= 3) {
        point now = up[tmp];
        up.pop_back();
        up.pop_back();
        up.push_back(now);
        tmp = up.size() - 1;
      }
    }
  }
  for (int i = h.size() - 2; i >= 0; i--) {
    if (down.size() < 2) {
      down.push_back(h[i]);
    } else {
      down.push_back(h[i]);
      long tmp = down.size() - 1;
      while (lom(down[tmp - 2], down[tmp - 1], down[tmp]) && down.size() >= 3) {
        point now = down[tmp];
        down.pop_back();
        down.pop_back();
        down.push_back(now);
        tmp = down.size() - 1;
      }
    }
  }
  for (int i = 0; i < up.size(); i++) {
    v.push_back(up[i]);
  }
  for (int i = 1; i < down.size() - 1; i++) {
    v.push_back(down[i]);
  }
  return v;
}
int main() {
  long long n, m, kt = 0;
  long long t1, t2;
  vector<point> a, b, h;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> t1 >> t2;
    a.push_back({t1, t2});
    h.push_back({t1, t2});
  }
  cin >> m;
  for (int i = 1; i <= m; i++) {
    cin >> t1 >> t2;
    b.push_back({t1, t2});
    h.push_back({t1, t2});
  }
  sort(h.begin(), h.end());
  for (int i = 1; i < h.size(); i++) {
    if (h[i].x == h[i - 1].x && h[i].y == h[i - 1].y) {
      cout << "NO";
      kt = 1;
      break;
    }
  }
  if (kt == 0) {
    vector<point> cvx = convex_hull(h);
    sort(cvx.begin(), cvx.end());
    sort(a.begin(), a.end());
    if (cvx.size() != a.size()) {
      cout << "NO";
    } else {
      for (int i = 0; i < a.size(); i++) {
        if (a[i].x != cvx[i].x || a[i].y != cvx[i].y) {
          cout << "NO";
          kt = 1;
          break;
        }
      }
      if (kt == 0) {
        cout << "YES";
      }
    }
  }
}
