#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
using ii = pair<long long, long long>;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using vec = vector<long long>;
namespace royyaha {
template <typename T>
void pr(const T& x) {
  cout << x;
}
template <typename T1, typename T2>
void pr(const pair<T1, T2>& x) {
  cout << x.first << " " << x.second;
}
template <typename T, typename... Args>
void pr(const T& x, const Args&... rest) {
  pr(x);
  pr(rest...);
}
template <typename T>
void ou(const T& x) {
  pr(x);
  cout << endl;
}
template <typename T, typename... Args>
void ou(const T& x, const Args&... rest) {
  pr(x, ' ');
  ou(rest...);
}
template <typename T>
void ou(const vector<T>& v) {
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it + 1 == v.end())
      ou(*it);
    else
      pr(*it, ' ');
  }
}
}  // namespace royyaha
using namespace royyaha;
bool intersection(ii a, ii b) {
  return !(a.first > b.second || a.second < b.first);
}
signed main() {
  long long _T;
  cin >> _T;
  for (long long tt = 1; tt <= _T; ++tt) {
    long long a, b, n, m;
    cin >> a >> b >> n >> m;
    if (a > b) swap(a, b);
    if (a < m) {
      cout << "No\n";
      continue;
    }
    a -= m;
    if (a + b < n) {
      cout << "No\n";
      continue;
    }
    cout << "Yes\n";
  }
}
