#include <bits/stdc++.h>
using namespace std;
struct POINT {
  complex<long long> pt;
  bool type;
};
const int MAXN = 200005;
int N, M;
POINT P[MAXN];
POINT H[MAXN];
int sz = 0;
long long cross(complex<long long> a, complex<long long> b) {
  return imag(conj(a) * b);
}
bool compare_pt(POINT a, POINT b) {
  return a.pt.real() < b.pt.real() ||
         (a.pt.real() == b.pt.real() && a.pt.imag() < b.pt.imag());
}
void find_hull() {
  sort(P, P + N + M, compare_pt);
  for (int i = 0; i < N + M; i++) {
    while (sz >= 2 &&
           cross(H[sz - 2].pt - H[sz - 1].pt, P[i].pt - H[sz - 1].pt) < 0)
      sz--;
    H[sz] = P[i];
    sz++;
  }
  for (int i = N + M - 2, j = sz + 1; i >= 0; i--) {
    while (sz >= j &&
           cross(H[sz - 2].pt - H[sz - 1].pt, P[i].pt - H[sz - 1].pt) < 0)
      sz--;
    H[sz] = P[i];
    sz++;
  }
  sz--;
}
int main() {
  cin >> N;
  for (int i = 0; i < N; i++) {
    int x, y;
    cin >> x >> y;
    P[i].pt = complex<long long>(x, y);
    P[i].type = true;
  }
  cin >> M;
  for (int i = N; i < N + M; i++) {
    int x, y;
    cin >> x >> y;
    P[i].pt = complex<long long>(x, y);
    P[i].type = false;
  }
  find_hull();
  for (int i = 0; i < sz; i++)
    if (!H[i].type) {
      cout << "NO\n";
      return 0;
    }
  cout << "YES\n";
  return 0;
}
