#pragma comment(linker, "/STACK:60000000")
#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <ctime>
#include <cstring>
#include <cassert>
#include <sstream>
#include <iomanip>
#include <complex>
#include <queue>
#include <functional>

using namespace std;

#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define ford(i, n) for(int i = (int)(n) - 1; i >= 0; i--)
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define last(a) int(a.size() - 1)
#define all(a) a.begin(), a.end()
#define seta(a,x) memset (a, x, sizeof (a))
#define I (int)
#define y1 botva

typedef long long int64;
typedef pair <int, int> pii;
typedef long double ldb;

const long double eps = 1e-7;
const int inf = (1 << 30) - 1;
const int64 inf64 = ((int64)1 << 62) - 1;
const long double pi = 3.1415926535897932384626433832795;
const string task = "trian";

template <class T> T sqr (T x) {return x * x;}

// a on x
// b on y

long long x1, x2, y1, y2, a1, a2, b1, b2;

void no(){
	puts("No");
	exit(0);
}

void yes(){
	puts("Yes");
	exit(0);
}

void solve(){
	if (x1 > x2){
		swap(x1, x2);
		swap(y1, y2);
		swap(a1, a2);
		swap(b1, b2);
	}
	if (x2 > x1 + a1) no();
	if (y2 + b2 < y1) no();
	if (y2 * a1 > y1 * a1 + b1 * (a1 - x2 + x1)) no();
	yes();
}

void read(){
	cin >> x1 >> y1 >> a1 >> b1;
	cin >> x2 >> y2 >> a2 >> b2;
}

int main ()
{
	freopen ((task + ".in").data(), "r", stdin);
	freopen ((task + ".out").data(), "w", stdout);

	read();
	solve();

	return 0;
}
