#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using point = pair<int, int>;
pair<point, LL> parse() {
  LL A, B, C, D, Y, Z;
  cin >> A >> B >> Y >> Z >> C >> D >> Y >> Z;
  return make_pair(make_pair(A + C, B + D), max(abs(C - A), abs(B - D)));
}
bool interone(LL x, LL y, pair<point, LL> A) {
  LL xa = A.first.first, ya = A.first.second, la = A.second;
  return abs(xa - 2 * x) <= la && abs(ya - 2 * y) <= la;
}
bool intertwo(LL x, LL y, pair<point, LL> A) {
  LL xa = A.first.first, ya = A.first.second, la = A.second;
  return abs(xa - 2 * x) + abs(ya - 2 * y) <= la;
}
int main() {
  auto A = parse();
  auto B = parse();
  bool b = false;
  for (LL x = -100; x <= 100; ++x)
    for (LL y = -100; y <= 100; ++y) {
      b = b || (interone(x, y, A) && intertwo(x, y, B));
    }
  if (b)
    cout << "YES";
  else
    cout << "NO";
}
