#include <bits/stdc++.h>
using namespace std;
int a[4][2];
int b[4][2];
int vis[205][205];
int main() {
  bool flag = 0;
  int x1, x2, y1, y2;
  for (int i = 0; i < 4; i++) {
    scanf("%d %d", &a[i][0], &a[i][1]);
  }
  for (int i = 0; i < 4; i++) {
    scanf("%d %d", &b[i][0], &b[i][1]);
  }
  if (a[0][0] == a[1][0]) {
    y1 = min(a[0][1], a[1][1]);
    y2 = max(a[0][1], a[1][1]);
    x1 = min(a[1][0], a[2][0]);
    x2 = max(a[1][0], a[2][0]);
  } else {
    y1 = min(a[1][1], a[2][1]);
    y2 = max(a[1][1], a[2][1]);
    x1 = min(a[0][0], a[1][0]);
    x2 = max(a[0][0], a[1][0]);
  }
  for (int i = -100; i <= 100; i++)
    for (int j = -100; j <= 100; j++) {
      if (i >= x1 && i <= x2 && j >= y1 && j <= y2) {
        vis[i + 100][j + 100] = 1;
      }
    }
  if ((b[0][0] + b[0][1]) == (b[1][0] + b[1][1])) {
    x1 = min(b[0][1] + b[0][0], b[2][0] + b[2][1]);
    x2 = max(b[0][1] + b[0][0], b[2][0] + b[2][1]);
    y1 = min(b[0][1] - b[0][0], b[1][1] - b[1][0]);
    y2 = max(b[0][1] - b[0][0], b[1][1] - b[1][0]);
  } else {
    x1 = min(b[0][1] + b[0][0], b[1][0] + b[1][1]);
    x2 = max(b[0][1] + b[0][0], b[1][0] + b[1][1]);
    y1 = min(b[0][1] - b[0][0], b[2][1] - b[2][0]);
    y2 = max(b[0][1] - b[0][0], b[2][1] - b[2][0]);
  }
  for (int i = -100; i <= 100; i++)
    for (int j = -100; j <= 100; j++) {
      if (i + j >= x1 && i + j <= x2 && j - i >= y1 && j - i <= y2 &&
          vis[i + 100][j + 100]) {
        flag = 1;
      }
    }
  if (flag) {
    printf("YES\n");
  } else {
    printf("NO\n");
  }
  return 0;
}
