#include <bits/stdc++.h>
using namespace std;
template <class A, class B>
inline bool mina(A &first, B second) {
  return (first > second) ? (first = second, 1) : 0;
}
template <class A, class B>
inline bool maxa(A &first, B second) {
  return (first < second) ? (first = second, 1) : 0;
}
struct Point {
  long long first, second, z;
  Point() {}
  Point(long long first, long long second) : first(first), second(second) {}
  Point(long long first, long long second, long long z)
      : first(first), second(second), z(z) {}
  Point(const Point &p) : first(p.first), second(p.second), z(p.z) {}
  Point operator+(const Point &p) const {
    return Point(first + p.first, second + p.second);
  }
  Point operator-(const Point &p) const {
    return Point(first - p.first, second - p.second);
  }
  Point operator*(long long c) const { return Point(first * c, second * c); }
  Point operator/(long long c) const { return Point(first / c, second / c); }
  bool operator<(const Point &p) const {
    return make_pair(second, first) < make_pair(p.second, p.first);
  }
  bool operator==(const Point &p) const {
    return make_pair(second, first) == make_pair(p.second, p.first);
  }
};
long long cross(Point p, Point q) {
  return p.first * q.second - p.second * q.first;
}
long long area2(Point a, Point b, Point c) {
  return cross(a, b) + cross(b, c) + cross(c, a);
}
ostream &operator<<(ostream &os, const Point &p) {
  return os << "(" << p.first << "," << p.second << "," << p.z << ")";
}
vector<Point> AB;
int NA, NB;
void ConvexHull(vector<Point> &pts) {
  sort(pts.begin(), pts.end());
  vector<Point> up, dn;
  for (int i = 0; i < ((int)(pts).size()); i++) {
    while (((int)(up).size()) > 1 &&
           area2(up[((int)(up).size()) - 2], up.back(), pts[i]) > 0)
      up.pop_back();
    while (((int)(dn).size()) > 1 &&
           area2(dn[((int)(dn).size()) - 2], dn.back(), pts[i]) < 0)
      dn.pop_back();
    up.push_back(pts[i]);
    dn.push_back(pts[i]);
  }
  pts = dn;
  for (int i = (int)((int)(up).size()) - 2; i >= 1; i--) pts.push_back(up[i]);
}
int main() {
  scanf("%d", &NA);
  for (int i = 0; (i) < (NA); ++(i)) {
    int first, second;
    scanf("%d %d", &first, &second);
    AB.push_back(Point(first, second, 0));
  }
  scanf("%d", &NB);
  for (int i = 0; (i) < (NB); ++(i)) {
    int first, second;
    scanf("%d %d", &first, &second);
    AB.push_back(Point(first, second, 1));
  }
  ConvexHull(AB);
  for (auto p : AB) {
    if (p.z == 1) {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  return 0;
}
