#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) { return ((!b) ? a : GCD(b, a % b)); }
long long LCM(long long a, long long b) { return a / (GCD(a, b)) * b; }
long long nCr(long long n, long long r) {
  if (n < r) return 0;
  if (r == 0) return 1;
  return n * nCr(n - 1, r - 1) / r;
}
bool isPrime(long long n) {
  if (n == 2) return 1;
  if (n < 2 || n % 2 == 0) return 0;
  for (long long i = 3; i * i <= n; i += 2)
    if (n % i == 0) return 0;
  return 1;
}
bool isPalindrome(string str) {
  long long l = 0;
  long long h = str.size() - 1;
  while (h > l) {
    if (str[l++] != str[h--]) {
      return 0;
    }
  }
  return 1;
}
inline int random_Nums(int min, int max) {
  static bool first = true;
  if (first) {
    srand(time(NULL));
    return min + rand() % ((max + 1) - min);
  }
}
void primeFactors(int n) {
  vector<int> v;
  while (n % 2 == 0) {
    v.push_back(2);
    n = n / 2;
  }
  for (int i = 3; i <= sqrt(n); i = i + 2) {
    while (n % i == 0) {
      cout << i << " ";
      v.push_back(i);
      n = n / i;
    }
  }
  if (n > 2) v.push_back(n);
}
int main() {
  int x, y, z;
  int a, b, c;
  bool A = false, D = false, M = false;
  scanf("%d", &x), scanf("%d", &y), scanf("%d", &z);
  scanf("%d", &a), scanf("%d", &b), scanf("%d", &c);
  if (x <= a) a -= x, A = true;
  int sumGB = a + b;
  if (y <= sumGB) sumGB -= y, D = true;
  if (z <= sumGB + c) M = true;
  A and D and M ? cout << "YES" << endl : cout << "NO";
  return 0;
}
