#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  bool operator<(const point &p) const {
    return x < p.x || (x == p.x && y < p.y);
  }
};
long long cross(point O, point A, point B) {
  return (A.x - O.x) * (B.y - O.y) - (A.y - O.y) * (B.x - O.x);
}
vector<point> convex_hull(vector<point> P) {
  int n = P.size(), k = 0;
  vector<point> H(2 * n);
  sort(P.begin(), P.end());
  for (int i = 0; i < n; i++) {
    while (k >= 2 && cross(H[k - 2], H[k - 1], P[i]) < 0) k--;
    H[k++] = P[i];
  }
  for (int i = n - 2, t = k + 1; i >= 0; i--) {
    while (k >= t && cross(H[k - 2], H[k - 1], P[i]) < 0) k--;
    H[k++] = P[i];
  }
  H.resize(k - 1);
  return H;
}
int main() {
  int n, m;
  vector<point> a, b;
  cin >> n;
  for (int i = 0; i < n; i++) {
    point p;
    cin >> p.x >> p.y;
    a.push_back(p);
    b.push_back(p);
  }
  cin >> m;
  for (int i = 0; i < m; i++) {
    point p;
    cin >> p.x >> p.y;
    b.push_back(p);
  }
  a = convex_hull(a);
  b = convex_hull(b);
  bool ch = 1;
  if (a.size() != b.size()) ch = 0;
  for (int i = 0; i < a.size() && ch; i++) {
    if (a[i].x != b[i].x || a[i].y != b[i].y) ch = 0;
  }
  if (ch)
    puts("YES");
  else
    puts("NO");
  return 0;
}
