#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5 + 5;
int N, M;
pair<int, int> A[NMAX], B[NMAX], V[(NMAX << 1)];
static inline void Read() {
  ios_base ::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> N;
  for (int i = 1; i <= N; ++i) cin >> A[i].first >> A[i].second, V[i] = A[i];
  cin >> M;
  for (int i = 1; i <= M; ++i)
    cin >> B[i].first >> B[i].second, V[N + i] = B[i];
  return;
}
static inline long long Det3(pair<int, int> A, pair<int, int> B,
                             pair<int, int> C) {
  return (1LL * A.first * B.second + 1LL * B.first * C.second +
          1LL * C.first * A.second) -
         (1LL * B.second * C.first + 1LL * C.second * A.first +
          1LL * A.second * B.first);
}
static inline vector<pair<int, int> > ConvexHull(pair<int, int> V[], int K) {
  vector<pair<int, int> > ans;
  sort(V + 1, V + K + 1);
  vector<bool> Sel(K + 1);
  int Stiva[K + 1], Vf = 0;
  Stiva[++Vf] = 1;
  Stiva[++Vf] = 2;
  Sel[2] = 1;
  for (int i = 3; i <= K; ++i) {
    while (Vf > 1 && Det3(V[Stiva[Vf - 1]], V[Stiva[Vf]], V[i]) > 0) {
      Sel[Stiva[Vf]] = 0;
      --Vf;
    }
    Stiva[++Vf] = i;
    Sel[i] = 1;
  }
  for (int i = K; i >= 1; --i) {
    if (Sel[i]) continue;
    while (Vf > 1 && Det3(V[Stiva[Vf - 1]], V[Stiva[Vf]], V[i]) > 0) {
      Sel[Stiva[Vf]] = 0;
      --Vf;
    }
    Stiva[++Vf] = i;
    Sel[i] = 1;
  }
  for (int i = 1; i <= Vf; ++i) ans.push_back(V[Stiva[i]]);
  return ans;
}
int main() {
  Read();
  if (ConvexHull(A, N) == ConvexHull(V, N + M))
    cout << "YES";
  else
    cout << "NO";
  cout << '\n';
  return 0;
}
