#include <bits/stdc++.h>
using namespace std;
class pont {
 public:
  long long x, y;
  int id;
};
int n, m;
vector<pont> p;
pont operator-(const pont& p1, const pont& p2) {
  return {p1.x - p2.x, p1.y - p2.y};
}
int sgn(long long a) { return (a > 0) - (a < 0); }
int irany(const pont& p1, const pont& p2) {
  return sgn(p1.y * p2.x - p1.x * p2.y);
}
int fordul(const pont& p1, const pont& p2, const pont& p3) {
  return irany(p2 - p1, p3 - p1);
}
bool operator<(const pont& p1, const pont& p2) {
  int t = fordul(p[0], p1, p2);
  return t < 0 || t == 0 && (p1.x < p2.x || p1.x == p2.x && p1.y > p2.y);
}
int main() {
  cin >> n;
  p.resize(n);
  for (int i = 0; i < n; i++) {
    p[i].id = i;
    cin >> p[i].x >> p[i].y;
    if (p[i].x < p[0].x || p[i].x == p[0].x && p[i].y < p[0].y) {
      swap(p[i], p[0]);
    }
  }
  cin >> m;
  p.resize(n + m);
  for (int i = n; i < n + m; i++) {
    p[i].id = i;
    cin >> p[i].x >> p[i].y;
    if (p[i].x < p[0].x || p[i].x == p[0].x && p[i].y < p[0].y) {
      swap(p[i], p[0]);
    }
  }
  sort(p.begin() + 1, p.end());
  vector<pont> conv = {p[0], p[1]};
  for (pont& q : p) {
    while (conv.size() >= 2 &&
           fordul(conv[conv.size() - 2], conv.back(), q) > 0) {
      conv.pop_back();
    }
    conv.push_back(q);
  }
  for (pont& q : conv) {
    if (q.id >= n) {
      cout << "NO\n";
      return 0;
    }
  }
  cout << "YES\n";
  return 0;
}
