#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  int id;
  point(const long long& x = 0, const long long& y = 0, const int& id = 0)
      : x(x), y(y), id(id) {}
  void input(int _id) {
    cin >> x >> y;
    id = _id;
  }
};
bool cw(point a, point b, point c) {
  return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y) <= 0;
}
bool ccw(point a, point b, point c) {
  return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y) >= 0;
}
const int md = 1e6 + 10;
point a[md], b[md];
int n, m;
bool cmp(point a, point b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
point up[md], down[md];
int ru, rd;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; i++) a[i].input(0);
  cin >> m;
  for (int i = 1; i <= m; i++) a[n + i].input(1);
  n += m;
  sort(a + 1, a + 1 + n, cmp);
  point p1 = a[1], p2 = a[n];
  up[1] = p1;
  down[1] = p2;
  for (int i = 1; i <= n; i++) {
    if (i == n || cw(p1, a[i], p2)) {
      while (ru >= 2 && !cw(up[ru - 1], up[ru], a[i])) ru--;
      up[++ru] = a[i];
    }
    if (i == n || ccw(p1, a[i], p2)) {
      while (rd >= 2 && !ccw(down[rd - 1], down[rd], a[i])) rd--;
      down[++rd] = a[i];
    }
  }
  n = 0;
  for (int i = 1; i <= ru; i++) a[++n] = up[i];
  for (int i = rd - 1; i > 1; i--) a[++n] = down[i];
  for (int i = 1; i <= n; i++)
    if (a[i].id == 1) {
      cout << "NO";
      return 0;
    }
  cout << "YES";
  return 0;
}
