#include <bits/stdc++.h>
using namespace std;
class Computational_Geometry {
 public:
  void init();
  void solve();
  Computational_Geometry() {
    EPS = 1e-10;
    Pi = acos(-1.0);
  }

 private:
  struct node {
    long long x, y;
  } point[100010], line[100010];
  struct inter {
    double x, y;
  } q[100010], p[100010];
  int n, m;
  double EPS, Pi;
  friend bool operator==(const node &, const node &);
  friend node operator-(const node &, const node &);
  friend long long operator*(const node &, const node &);
};
bool operator==(const Computational_Geometry::node &a,
                const Computational_Geometry::node &b) {
  return (a.x == b.x && a.y == b.y);
}
Computational_Geometry::node operator-(const Computational_Geometry::node &a,
                                       const Computational_Geometry::node &b) {
  Computational_Geometry::node d;
  d.x = a.x - b.x;
  d.y = a.y - b.y;
  return d;
}
long long operator*(const Computational_Geometry::node &a,
                    const Computational_Geometry::node &b) {
  return a.x * b.y - a.y * b.x;
}
void Computational_Geometry::init() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> point[i].x >> point[i].y;
  for (int i = 2; i <= n; i++) line[i] = point[i] - point[1];
}
void Computational_Geometry::solve() {
  bool flag = true;
  cin >> m;
  for (int i = 1; i <= m; i++) {
    if (!flag) continue;
    node p, now;
    cin >> p.x >> p.y;
    now = p - point[1];
    if (now * line[2] <= 0 || now * line[n] >= 0) flag = false;
    int l = 2, r = n - 1;
    while (l <= r) {
      int mid = (l + r) / 2;
      if (now * line[mid + 1] <= 0)
        r = mid - 1;
      else
        l = mid + 1;
    }
    if ((p - point[l]) * (point[l + 1] - point[l]) <= 0) flag = false;
  }
  if (flag)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
}
int main() {
  ios::sync_with_stdio(false);
  Computational_Geometry ans;
  ans.init();
  ans.solve();
  return 0;
}
