#include<iostream>
#include<cstdio>

struct P{
	double x, y;
};

int main(){
	P ps[4];
	while(std::cin >> ps[0].x >> ps[0].y, !std::cin.eof()){
		for(int i=1;i<4;i++){
			std::cin >> ps[i].x >> ps[i].y;
		}

		int k = 0;
		for(;k<2;k++){
			P as[4];
			for(int i=0;i<2;i++){
				for(int j=0;j<2;j++){
					double x = ps[j].x, y = ps[i].y;
					as[i*2+j] = {x, y};
				}
			}

			bool f = false;
			for(int i=0;i<4;i++){
				P p = as[i];
				if(ps[2].x <= p.x && p.x <= ps[3].x && ps[2].y <= p.y && p.y <= ps[3].y){
					f = true;
					break;
				}
			}

			if(f){
				break;
			}

			std::swap(ps[0], ps[2]);
			std::swap(ps[1], ps[3]);
		}

		if(k<2){
			puts("YES");
		}else{
			puts("NO");
		}
	}
}