#include <bits/stdc++.h>
using namespace std;
int ax[4], ay[4], bx[4], by[4];
int xmin = 1000, xmax = -1000, ymin = 1000, ymax = -1000;
bool f() {
  for (int i = 0; i < 4; i++) {
    if (bx[i] >= xmin && bx[i] <= xmax && by[i] >= ymin && by[i] <= ymax) {
      return 1;
    }
  }
  double X = ((double)bx[0] + (double)bx[3]) / 2,
         Y = ((double)by[0] + (double)by[3]) / 2;
  if (X >= xmin && X <= xmax && Y >= ymin && Y <= ymax) {
    return 1;
  }
  return 0;
}
void rotat() {
  int X, Y;
  xmin = ymin = 1000;
  xmax = ymax = -1000;
  for (int i = 0; i < 4; i++) {
    X = ax[i] + ay[i];
    Y = ax[i] - ay[i];
    ax[i] = X;
    ay[i] = Y;
    X = bx[i] + by[i];
    Y = bx[i] - by[i];
    bx[i] = X;
    by[i] = Y;
    swap(ax[i], bx[i]);
    swap(by[i], ay[i]);
    xmin = min(xmin, ax[i]);
    xmax = max(xmax, ax[i]);
    ymin = min(ymin, ay[i]);
    ymax = max(ymax, ay[i]);
  }
}
int main() {
  for (int i = 0; i < 4; i++) {
    cin >> ax[i] >> ay[i];
    xmin = min(xmin, ax[i]);
    xmax = max(xmax, ax[i]);
    ymin = min(ymin, ay[i]);
    ymax = max(ymax, ay[i]);
  }
  for (int i = 0; i < 4; i++) {
    cin >> bx[i] >> by[i];
  }
  if (f()) {
    cout << "Yes\n";
    return 0;
  }
  rotat();
  if (f()) {
    cout << "Yes\n";
    return 0;
  }
  cout << "No\n";
  return 0;
}
