#include <iostream>
#include <vector>
#include <algorithm>
#include <complex>

using namespace std;

#define EPS (1e-10)
#define EQ(a,b) (abs(a-b)<EPS)

typedef complex<double> P;

struct Rect{
	double minx;
	double miny;
	double maxx;
	double maxy;
};

int main(){

	Rect r[2];
	while(cin>>r[0].minx>>r[0].miny>>r[0].maxx>>r[0].maxy>>r[1].minx>>r[1].miny>>r[1].maxx>>r[1].maxy){
		P a[4];
		P b[4];
		a[0]=P(r[0].minx,r[0].miny);
		a[1]=P(r[0].minx,r[0].maxy);
		a[2]=P(r[0].maxx,r[0].miny);
		a[3]=P(r[0].maxx,r[0].maxy);

		b[0]=P(r[1].minx,r[1].miny);
		b[1]=P(r[1].minx,r[1].maxy);
		b[2]=P(r[1].maxx,r[1].miny);
		b[3]=P(r[1].maxx,r[1].maxy);

		bool f=false;
		for(int i = 0; i < 4; i++){
			if(a[i].real()+EPS>=r[1].minx&&a[i].real()<=r[1].maxx+EPS
				&&a[i].imag()+EPS>=r[1].miny&&a[i].imag()<=r[1].maxy+EPS){
					cout<<"YES"<<endl;
					f=true;
					break;
			}
		}
		if(!f){
			for(int i = 0; i < 4; i++){
				if(b[i].real()+EPS>=r[0].minx&&b[i].real()<=r[0].maxx+EPS
					&&b[i].imag()+EPS>=r[0].miny&&b[i].imag()<=r[0].maxy+EPS){
						cout<<"YES"<<endl;
						f=true;
						break;
				}
			}
			if(!f)
				cout<<"NO"<<endl;
		}

	}

	return 0;
}