#include <bits/stdc++.h>
using namespace std;
typedef struct pt {
  long long x, y;
  bool ty;
};
vector<pt> a;
int n, m;
bool cmp(pt a, pt b) {
  if (a.x != b.x) return a.x < b.x;
  return a.y < b.y;
}
bool cw(pt a, pt b, pt c) {
  return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y) <= 0;
}
bool ccw(pt a, pt b, pt c) {
  return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y) >= 0;
}
void ConvexHull(vector<pt> &a) {
  sort(a.begin(), a.end(), cmp);
  vector<pt> up, down;
  pt p1 = a[0], p2 = a.back();
  up.push_back(p1);
  down.push_back(p1);
  for (int i = 1; i < a.size(); i++) {
    if (i == a.size() - 1 || cw(p1, a[i], p2)) {
      while (up.size() >= 2 && !cw(up[up.size() - 2], up[up.size() - 1], a[i]))
        up.pop_back();
      up.push_back(a[i]);
    }
    if (i == a.size() - 1 || ccw(p1, a[i], p2)) {
      while (down.size() >= 2 &&
             !ccw(down[down.size() - 2], down[down.size() - 1], a[i]))
        down.pop_back();
      down.push_back(a[i]);
    }
  }
  a.clear();
  for (pt i : up) a.push_back(i);
  for (int i = down.size() - 2; i >= 1; i--) a.push_back(down[i]);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    long long x, y;
    cin >> x >> y;
    a.push_back({x, y, 0});
  }
  cin >> m;
  for (int i = 1; i <= m; i++) {
    long long x, y;
    cin >> x >> y;
    a.push_back({x, y, 1});
  }
  ConvexHull(a);
  for (pt i : a)
    if (i.ty) {
      cout << "NO";
      return 0;
    }
  cout << "YES";
}
