#include <iostream>

using namespace std;

typedef struct Point{
	double x,y;
};

//1が左下,2が右上

int squareVsSquare(Point *pa1,Point *pa2,Point *pb1,Point *pb2){
	int sum=0;
	//aの箱にbの箱の左したが入っている。
	if(pb1->x >= pa1->x && pb1->x <= pa2->x 
		&& pb1->y >= pa1->y && pb1->y <= pa2->y ){
		sum++;
	}
	//aの箱にbの箱の左上が入っている。pb1.x pb2.y
	else if( pb1->x >= pa1->x && pb1->x <= pa2->x 
		&& pb2->y >= pa1->y && pb1->y <= pa2->y){
		sum++;
	}
	//aの箱にbの箱の右下が入っている。pb1.y,pb2.x
	else if( pb2->x >= pa1->x && pb2->x <= pa2->x 
		&& pb1->y >= pa1->y && pb1->y <= pa2->y){
		sum++;
	}
	//aの箱にbの箱の右上が入っている。pb2.x pb2.y
	else if( pb2->x >= pa1->x && pb2->x <= pa2->x 
		&& pb2->y >= pa1->y && pb2->y <= pa2->y){
		sum++;
	}
	return sum;	
}

int main(){

	Point p[4];
	while(cin>>p[0].x){
		cin>>p[0].y;
		for(int i=1;i<4;i++){
			cin>>p[i].x;
			cin>>p[i].y;
		}
		//p[0],p[1]を固定して、p[2],p[3]が動いていることを考える。

		if(squareVsSquare(&p[0],&p[1],&p[2],&p[3])){
			cout<<"YES"<<endl;
		}
		else{
			cout<<"NO"<<endl;
		}
	}

	return 0;
}

/*
Sample Input
0.0 0.0 5.0 5.0 1.0 1.0 4.0 4.0
0.0 0.0 4.0 5.0 1.0 1.0 5.0 5.0
0.0 0.0 4.0 4.0 -3.0 -5.0 2.0 -1.0
Output for the Sample Input
YES
YES
NO
*/