#include <bits/stdc++.h>
using namespace std;
template <class C>
constexpr int sz(const C &c) {
  return int(c.size());
}
using ll = long long;
using ld = long double;
constexpr const char nl = '\n', sp = ' ';
using T = long double;
constexpr const T EPS = 1e-9;
bool lt(T a, T b) { return a + EPS < b; }
bool le(T a, T b) { return !lt(b, a); }
bool gt(T a, T b) { return lt(b, a); }
bool ge(T a, T b) { return !lt(a, b); }
bool eq(T a, T b) { return !lt(a, b) && !lt(b, a); }
bool ne(T a, T b) { return lt(a, b) || lt(b, a); }
int sgn(T a) { return lt(a, 0) ? -1 : lt(0, a) ? 1 : 0; }
struct eps_lt {
  bool operator()(T a, T b) const { return lt(a, b); }
};
struct eps_le {
  bool operator()(T a, T b) const { return !lt(b, a); }
};
struct eps_gt {
  bool operator()(T a, T b) const { return lt(b, a); }
};
struct eps_ge {
  bool operator()(T a, T b) const { return !lt(a, b); }
};
struct eps_eq {
  bool operator()(T a, T b) const { return !lt(a, b) && !lt(b, a); }
};
struct eps_ne {
  bool operator()(T a, T b) const { return lt(a, b) || lt(b, a); }
};
using pt = complex<T>;
istream &operator>>(istream &stream, pt &p) {
  T X, Y;
  stream >> X >> Y;
  p = pt(X, Y);
  return stream;
}
ostream &operator<<(ostream &stream, const pt &p) {
  return stream << p.real() << ' ' << p.imag();
}
bool operator<(const pt &a, const pt &b) {
  return eq(a.real(), b.real()) ? lt(a.imag(), b.imag())
                                : lt(a.real(), b.real());
}
bool operator<=(const pt &a, const pt &b) { return !(b < a); }
bool operator>(const pt &a, const pt &b) { return b < a; }
bool operator>=(const pt &a, const pt &b) { return !(a < b); }
bool operator==(const pt &a, const pt &b) { return !(a < b) && !(b < a); }
bool operator!=(const pt &a, const pt &b) { return a < b || b < a; }
struct pt_lt {
  bool operator()(const pt &a, const pt &b) const { return a < b; }
};
struct pt_le {
  bool operator()(const pt &a, const pt &b) const { return !(b < a); }
};
struct pt_gt {
  bool operator()(const pt &a, const pt &b) const { return b < a; }
};
struct pt_ge {
  bool operator()(const pt &a, const pt &b) const { return !(a < b); }
};
struct pt_eq {
  bool operator()(const pt &a, const pt &b) const {
    return !(a < b) && !(b < a);
  }
};
struct pt_ne {
  bool operator()(const pt &a, const pt &b) const { return a < b || b < a; }
};
T dot(const pt &a, const pt &b) {
  return a.real() * b.real() + a.imag() * b.imag();
}
T cross(const pt &a, const pt &b) {
  return a.real() * b.imag() - a.imag() * b.real();
}
T norm(const pt &a) { return dot(a, a); }
T distSq(const pt &a, const pt &b) { return norm(b - a); }
T dist(const pt &a, const pt &b) { return abs(b - a); }
T ang(const pt &a, const pt &b) { return arg(b - a); }
T ang(const pt &a, const pt &b, const pt &c) {
  return remainder(ang(b, a) - ang(b, c), 2 * acos(T(-1)));
}
T area2(const pt &a, const pt &b, const pt &c) { return cross(b - a, c - a); }
int ccw(const pt &a, const pt &b, const pt &c) { return sgn(area2(a, b, c)); }
pt rot(const pt &a, const pt &p, T theta) {
  return (a - p) * pt(polar(T(1), theta)) + p;
}
pt perp(const pt &a) { return pt(-a.imag(), a.real()); }
bool onSeg(const pt &p, const pt &a, const pt &b) {
  return !ccw(p, a, b) && !lt(0, dot(a - p, b - p));
}
int mod(int i, int n) { return i < n ? i : i - n; }
int isInsideConvexPolygon(const vector<pt> &poly, const pt &p) {
  int n = poly.size(), a = 1, b = n - 1;
  if (n < 3) return onSeg(p, poly[0], poly.back()) ? 0 : 1;
  if (ccw(poly[0], poly[a], poly[b]) > 0) swap(a, b);
  int o1 = ccw(poly[0], poly[a], p), o2 = ccw(poly[0], poly[b], p);
  if (o1 > 0 || o2 < 0) return 1;
  if (o1 == 0 || o2 == 0) return 0;
  while (abs(a - b) > 1) {
    int c = (a + b) / 2;
    (ccw(poly[0], poly[c], p) > 0 ? b : a) = c;
  }
  return ccw(poly[a], poly[b], p);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int N;
  cin >> N;
  vector<pt> P(N);
  for (auto &&p : P) cin >> p;
  int M;
  cin >> M;
  for (int i = 0; i < M; i++) {
    pt p;
    cin >> p;
    if (isInsideConvexPolygon(P, p) != -1) {
      cout << "NO" << nl;
      return 0;
    }
  }
  cout << "YES" << nl;
  return 0;
}
