#include <bits/stdc++.h>   using namespace std;   typedef struct SPoint {     double X, Y;     SPoint(double X = 0, double Y = 0) : X(X), Y(Y) {}     double abs() { return sqrt(X * X + Y * Y); }     double sqrAbs() { return X * X + Y * Y; }   } TPoint;   TPoint operator-(const TPoint& shl, const TPoint& shr) {     return TPoint(shl.X - shr.X, shl.Y - shr.Y);   }   istream& operator>>(istream& is, TPoint& getPoint) {     return is >> getPoint.X >> getPoint.Y;   }   const int MAX_POINT = 5;   const double ESP = 1e-8;   double squareOfRect;   TPoint outRect[MAX_POINT], inRect[MAX_POINT];   double squareOf(const TPoint& A, const TPoint& B, const TPoint& C) {     double a = (B - C).abs();     double b = (C - A).abs();     double c = (A - B).abs();     double p = (a + b + c) / 2;     return sqrt(p * (p - a) * (p - b) * (p - c));   }   bool inSide(const TPoint& checkPoint) {     double minX = 100, minY = 100, maxX = -100, maxY = -100;     for (int i = 1; i <= 4; ++i) minX = min(minX, outRect[i].X);     for (int i = 1; i <= 4; ++i) minY = min(minY, outRect[i].Y);     for (int i = 1; i <= 4; ++i) maxX = max(maxX, outRect[i].X);     for (int i = 1; i <= 4; ++i) maxY = max(maxY, outRect[i].Y);     if (checkPoint.X < minX || checkPoint.X > maxX || checkPoint.Y < minY ||         checkPoint.Y > maxY)       return false;     double square = 0;     for (int i = 1; i <= 4; ++i)       square += squareOf(checkPoint, outRect[i], outRect[i - 1]);     return abs(square - squareOfRect) < ESP;   }   void checker() {     outRect[0] = outRect[4];     squareOfRect = (outRect[0] - outRect[1]).sqrAbs();     for (int i = 1; i <= 4; ++i)       if (inSide(inRect[i])) cout <<  YES n , exit(0);     TPoint center((inRect[1].X + inRect[3].X) / 2,                   (inRect[1].Y + inRect[3].Y) / 2);     if (inSide(center)) cout <<  YES n , exit(0);   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0), cout.tie(0);     for (int i = 1; i <= 4; ++i) cin >> outRect[i];     for (int i = 1; i <= 4; ++i) cin >> inRect[i];     checker();     swap(inRect, outRect);     checker();     cout <<  NO n ;     return 0;   }   