#include <bits/stdc++.h>
using namespace std;
int dr[] = {0, 0, 1, -1, -1, -1, 1, 1};
int dc[] = {1, -1, 0, 0, -1, 1, -1, 1};
int const MAX = 1e6 + 7;
int const MOD = 1e9 + 7;
class point {
 public:
  long double x, y;
  point() { x = y = 0.0; }
  point(long double xx, long double yy) : x(xx), y(yy) {}
  static long double dist(point p1, point p2) {
    return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
  }
  bool operator==(point p) const {
    return fabs(x - p.x) < 1e-9 && fabs(y - p.y) < 1e-9;
  }
};
struct vec {
  long double x, y;
  vec(long double _x, long double _y) : x(_x), y(_y) {}
  static vec toVec(point a, point b) { return vec(b.x - a.x, b.y - a.y); };
  static long double cross(vec a, vec b) { return a.x * b.y - a.y * b.x; }
  static bool ccw(point p, point q, point r) {
    return cross(toVec(p, q), toVec(p, r)) > 0;
  }
  static bool collinear(point p, point q, point r) {
    return fabs(cross(toVec(p, q), toVec(p, r))) < 1e-9;
  }
};
point pivot;
class polygon {
 public:
  static bool angleCmp(point a, point b) {
    if (vec::collinear(pivot, a, b))
      return point::dist(pivot, a) < point::dist(pivot, b);
    long double d1x = a.x - pivot.x, d1y = a.y - pivot.y;
    long double d2x = b.x - pivot.x, d2y = b.y - pivot.y;
    return (atan2(d1y, d1x) - atan2(d2y, d2x)) < 0;
  }
  static vector<point> Convex_Hull(vector<point> P) {
    int n = (long long)P.size();
    if ((long long)P.size() <= 3) {
      if (!(P[0] == P[n - 1])) P.push_back(P[0]);
      return P;
    }
    int P0 = 0;
    for (int i = 1; i < n; ++i)
      if (P[i].y < P[P0].y || (P[i].y == P[P0].y && P[i].x > P[P0].x)) P0 = i;
    swap(P[0], P[P0]);
    pivot = P[0];
    sort(++P.begin(), P.end(), angleCmp);
    vector<point> S;
    S.push_back(P[n - 1]);
    S.push_back(P[0]);
    S.push_back(P[1]);
    int i = 2, j;
    while (i < n) {
      j = (long long)S.size() - 1;
      if (vec::ccw(S[j - 1], S[j], P[i]) ||
          vec::collinear(S[j - 1], S[j], P[i]))
        S.push_back(P[i++]);
      else
        S.pop_back();
    }
    long double a, b, c;
    point p1 = S[0], p2 = S[1];
    if (fabs(p1.x - p2.x) < 1e-9) {
      a = 1.0;
      b = 0.0;
      c = -p1.x;
    } else {
      a = -(long double)(p1.y - p2.y) / (p1.x - p2.x);
      b = 1.0;
      c = -(long double)(a * p1.x) - p1.y;
    }
    for (int i = 0; i < (long long)P.size(); ++i)
      if (a * P[i].x + b * P[i].y + c == 0) S.push_back(P[i]);
    return S;
  }
};
int main() {
  int n, m;
  scanf("%d", &n);
  map<pair<long long, long long>, int> mp;
  vector<point> P;
  for (int i = 0; i < n; ++i) {
    point a;
    cin >> a.x >> a.y;
    P.push_back(a);
  }
  scanf("%d", &m);
  for (int i = 0; i < m; ++i) {
    point a;
    cin >> a.x >> a.y;
    P.push_back(a);
    mp[pair<long long, long long>(a.x, a.y)] = 1;
  }
  P = polygon::Convex_Hull(P);
  for (int i = 0; i < (long long)P.size(); ++i)
    if (mp[pair<long long, long long>(P[i].x, P[i].y)])
      return (cout << "NO\n", 0);
  cout << "YES\n";
}
