#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T bigmod(T p, T e, T M) {
  long long ret = 1;
  for (; e > 0; e >>= 1) {
    if (e & 1) ret = (ret * p) % M;
    p = (p * p) % M;
  }
  return (T)ret;
}
template <class T>
inline T gcd(T a, T b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
template <class T>
inline T modinverse(T a, T M) {
  return bigmod(a, M - 2, M);
}
template <class T>
inline T lcm(T a, T b) {
  a = abs(a);
  b = abs(b);
  return (a / gcd(a, b)) * b;
}
template <class T, class X>
inline bool getbit(T a, X i) {
  T t = 1;
  return ((a & (t << i)) > 0);
}
template <class T, class X>
inline T setbit(T a, X i) {
  T t = 1;
  return (a | (t << i));
}
template <class T, class X>
inline T resetbit(T a, X i) {
  T t = 1;
  return (a & (~(t << i)));
}
inline long long power(long long a, long long b) {
  long long multiply = 1;
  for (int i = (0); i < (b); i++) {
    multiply *= a;
  }
  return multiply;
}
struct PT {
  long long x, y;
  PT() {}
  PT(long long x, long long y) : x(x), y(y) {}
  bool operator<(const PT &P) const { return x < P.x || (x == P.x && y < P.y); }
};
vector<PT> all;
map<PT, bool> ase;
long long cross(const PT &p, const PT &q, const PT &r) {
  return (q.x - p.x) * (r.y - p.y) - (q.y - p.y) * (r.x - p.x);
}
vector<PT> findConvexHull(vector<PT> &Points) {
  int n = Points.size(), k = 0;
  sort(Points.begin(), Points.end());
  vector<PT> Hull;
  for (int i = (0); i < (n); i++) {
    while (Hull.size() >= 2 &&
           cross(Hull[Hull.size() - 2], Hull.back(), Points[i]) < 0) {
      Hull.pop_back();
      k--;
    }
    Hull.push_back(Points[i]);
    k++;
  }
  for (int i = n - 2, t = k + 1; i >= 0; i--) {
    while (Hull.size() >= t &&
           cross(Hull[Hull.size() - 2], Hull.back(), Points[i]) < 0) {
      Hull.pop_back();
      k--;
    }
    Hull.push_back(Points[i]);
    k++;
  }
  Hull.resize(k);
  if (Hull.size()) Hull.pop_back();
  return Hull;
}
int main() {
  int n, m, x, y;
  scanf("%d", &n);
  for (int i = (0); i < (n); i++) {
    scanf("%d%d", &x, &y);
    all.push_back(PT(x, y));
  }
  scanf("%d", &m);
  for (int i = (0); i < (m); i++) {
    scanf("%d%d", &x, &y);
    all.push_back(PT(x, y));
    ase[PT(x, y)] = true;
  }
  vector<PT> hull = findConvexHull(all);
  bool flag = false;
  for (int j = (0); j < (hull.size()); j++) {
    if (ase[hull[j]]) {
      flag = true;
      break;
    }
  }
  if (!flag)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
