#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 6;
const long long M = 1e9 + 7;
const double eps = 1e-7;
int a[N];
int Int() {
  int x;
  scanf("%d", &x);
  return x;
}
long long Lnt() {
  long long x;
  scanf("%I64d", &x);
  return x;
}
long long Bigmod(long long A, long long B, long long C) {
  if (B == 0LL) return 1LL;
  long long x = Bigmod(A, B / 2LL, C);
  x = (x * x) % C;
  if (B % 2 == 1) x = (x * A) % C;
  return x;
}
struct mar {
  int i, j, c, d;
} cr[N];
bool cmp(mar a, mar b) {
  if (a.i == b.i) return a.j < b.j;
  return a.i < b.i;
}
bool Cmp(int a, int b) { return a > b; }
void print(int n) { printf("%d\n", n); }
void Print(long long n) { printf("%I64d\n", n); }
void debug(int n) { printf("%d ", n); }
int main() {
  int x1 = Int(), x2 = Int(), x3 = Int(), x4 = Int(), x5 = Int(), x6 = Int();
  int c = x3 + x5;
  int d = max(x4, x6);
  if (x1 > x2) swap(x1, x2);
  if ((x1 >= c && x2 >= d) or (x2 >= c && x1 >= d)) return puts("YES"), 0;
  c = x3 + x6;
  d = max(x4, x5);
  if ((x1 >= c && x2 >= d) or (x1 >= d and x2 >= c)) return puts("YES"), 0;
  c = x4 + x5;
  d = max(x3, x6);
  if ((x1 >= c && x2 >= d) or (x1 >= d and x2 >= c)) return puts("YES"), 0;
  c = x4 + x6;
  d = max(x3, x5);
  if ((x1 >= c && x2 >= d) or (x1 >= d and x2 >= c)) return puts("YES"), 0;
  return puts("NO");
}
