#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
};
bool comp(point &a, point &b) {
  if (a.x < b.x) {
    return true;
  }
  if (a.x == b.x) {
    if (a.y < b.y) {
      return true;
    }
    return false;
  }
  return false;
}
class comp1 {
 public:
  bool operator()(const point &a, const point &b) const {
    if (a.x < b.x) {
      return true;
    }
    if (a.x == b.x) {
      if (a.y < b.y) {
        return true;
      }
      return false;
    }
    return false;
  }
};
class comp2 {
 public:
  bool operator()(const point &a, const point &b) const {
    if (a.x < b.x) {
      return true;
    }
    if (a.x == b.x) {
      if (a.y < b.y) {
        return true;
      }
      return false;
    }
    return false;
  }
};
bool upperhalf(point p1, point p2, point p3) {
  return p3.y * (p1.x - p2.x) + p1.y * (p2.x - p3.x) + p2.y * (p3.x - p1.x) < 0;
}
bool lowerhalf(point p1, point p2, point p3) {
  return p3.y * (p1.x - p2.x) + p1.y * (p2.x - p3.x) + p2.y * (p3.x - p1.x) > 0;
}
void convex_hull(vector<point> &p, vector<point> &p1) {
  sort(p.begin(), p.end(), comp);
  vector<point> up, down;
  up.push_back(p[0]);
  down.push_back(p[0]);
  long long n = p.size();
  for (long long i = 1; i < p.size(); i++) {
    if (i == n - 1 || upperhalf(p[0], p[n - 1], p[i])) {
      while (up.size() >= 2 &&
             upperhalf(up[up.size() - 2], up[up.size() - 1], p[i])) {
        up.pop_back();
      }
      up.push_back(p[i]);
    }
    if (i == n - 1 || lowerhalf(p[0], p[n - 1], p[i])) {
      while (down.size() >= 2 &&
             upperhalf(down[down.size() - 2], p[i], down[down.size() - 1])) {
        down.pop_back();
      }
      down.push_back(p[i]);
    }
  }
  p.clear();
  set<point, comp1> q;
  map<point, bool, comp2> mp;
  for (auto x : down) {
    mp[x] = true;
  }
  for (auto y : up) {
    mp[y] = true;
  }
  bool f = true;
  for (auto x : p1) {
    if (mp.find(x) != mp.end()) {
      f = false;
      break;
    }
  }
  if (f) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
}
int main() {
  long long n;
  cin >> n;
  vector<point> p1(n);
  for (long long i = 0; i < n; i++) {
    cin >> p1[i].x >> p1[i].y;
  }
  long long m;
  cin >> m;
  vector<point> p2(m);
  for (long long i = 0; i < m; i++) {
    cin >> p2[i].x >> p2[i].y;
  }
  vector<point> p;
  for (long long i = 0; i < n; i++) {
    p.push_back(p1[i]);
  }
  for (long long i = 0; i < m; i++) {
    p.push_back(p2[i]);
  }
  convex_hull(p, p2);
}
