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

using namespace std;

#define EPS (1e-8)
#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(
				(EQ(a[i].real(),r[1].minx)||a[i].real()>r[1].minx)
				&&(EQ(a[i].real(),r[1].maxx)||a[i].real()<r[1].maxx)
				&&(EQ(a[i].imag(),r[1].miny)||a[i].imag()>r[1].miny)
				&&(EQ(a[i].imag(),r[1].maxy)||a[i].imag()<r[1].maxy)
				){
					cout<<"YES"<<endl;
					f=true;
					break;
			}
		}
		if(!f){
			for(int i = 0; i < 4; i++){
				if(
					(EQ(b[i].real(),r[0].minx)||b[i].real()>r[0].minx)
					&&(EQ(b[i].real(),r[0].maxx)||b[i].real()<r[0].maxx)
					&&(EQ(b[i].imag(),r[0].miny)||b[i].imag()>r[0].miny)
					&&(EQ(b[i].imag(),r[0].maxy)||b[i].imag()<r[0].maxy)
					){
						cout<<"YES"<<endl;
						f=true;
						break;
				}
			}
			if(!f)
				cout<<"NO"<<endl;
		}
	}
	return 0;
}
using namespace std;

#define EPS (1e-8)
#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(
				(EQ(a[i].real(),r[1].minx)||a[i].real()>r[1].minx)
				&&(EQ(a[i].real(),r[1].maxx)||a[i].real()<r[1].maxx)
				&&(EQ(a[i].imag(),r[1].miny)||a[i].imag()>r[1].miny)
				&&(EQ(a[i].imag(),r[1].maxy)||a[i].imag()<r[1].maxy)
				){
					cout<<"YES"<<endl;
					f=true;
					break;
			}
		}
		if(!f){
			for(int i = 0; i < 4; i++){
				if(
					(EQ(b[i].real(),r[0].minx)||b[i].real()>r[0].minx)
					&&(EQ(b[i].real(),r[0].maxx)||b[i].real()<r[0].maxx)
					&&(EQ(b[i].imag(),r[0].miny)||b[i].imag()>r[0].miny)
					&&(EQ(b[i].imag(),r[0].maxy)||b[i].imag()<r[0].maxy)
					){
						cout<<"YES"<<endl;
						f=true;
						break;
				}
			}
			if(!f)
				cout<<"NO"<<endl;
		}
	}

	return 0;
}