#include <bits/stdc++.h>
#include<math.h>
#include<stack>
#include<string.h>
#include<bitset>
using namespace std;
//typedef unsigned long long int ull;
const long double pi=2*acos(0.0);
long long infinity=std::numeric_limits<long long>::max();
//long long infinity=400000;
const long long mod=1000000007;
const long long MAXN=1;
const long long max_INT=2000000;
long long binary_search(long long dp[],long long n,long long p)
{
	long long l,r,mid;

	l=0;r=n-1;

	while(l<=r && l>=0 && l<=n-1 && r>=0 && r<=n-1)
	{
		mid=(l+r)/2;
		if(dp[mid]>=p)
			{

				r=mid-1;
			}
			else //if(dp[mid]<p)
			{
				l=mid+1;

			}
			/*else
				return mid;*/

//cout<<l<<" "<<r<<" "<<mid<<"\n";
	}
	return l;
}

int extended_euclid(int a,int b,int& x,int& y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int x1,y1,g;
	g=extended_euclid(b,a%b,x1,y1);
	x=y1;
	y=x1-y1*(a/b);

	return g;

}

bool linear_diaphantine(int a,int b,int c,int&x,int&y,int& g)
{
	int x1,y1;
	g=extended_euclid(abs(a),abs(b),x1,y1);

	//cout<<g<<" "<<x1<<" "<<y1<<"\n";
	if(c%g)
	{
		return false;
	}
	x=(c/g)*x1;
	y=(c/g)*y1;
	if(a<0)
		x=-x;
	if(b<0)
		y=-y;

	return true;
}

int spf[MAXN];

// Calculating SPF (Smallest Prime Factor) for every
// number till MAXN.
// Time Complexity : O(nloglogn)
void sieve()
{
    spf[1] = 1;

    for (int i=2; i<MAXN; i++)

        // marking smallest prime factor for every
        // number to be itself.
        {spf[i] = i;

        }

    // separately marking spf for every even
    // number as 2
    for (int i=4; i<MAXN; i+=2)
        spf[i] = 2;

    for (int i=3; i*i<MAXN; i++)
    {
        // checking if i is prime

        if (spf[i] == i)
        { //m1[i]=1;

            // marking SPF for all numbers divisible by i

            for (int j=i*i; j<MAXN; j+=i)

                // marking spf[j] if it is not
                // previously marked
                {
                	if (spf[j]==j)
                    {
                    	spf[j] = i;

                    }
                }
        }
    }

}
bool prime[MAXN];
void SieveOfEratosthenes(long long n=MAXN-1)
{
    // Create a boolean array "prime[0..n]" and initialize
    // all entries it as true. A value in prime[i] will
    // finally be false if i is Not a prime, else true.

    memset(prime, true, sizeof(prime));
  	prime[1]=false;
    for (long long p=2; p*p<=n; p++)
    {
        // If prime[p] is not changed, then it is a prime
        if (prime[p] == true)
        {
            // Update all multiples of p greater than or
            // equal to the square of it
            // numbers which are multiple of p and are
            // less than p^2 are already been marked.
            for (long long i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }

    // Print all prime numbers

}

  long long power(long long x, long long y, long long p)
{
    long long res = 1;     // Initialize result

    x = x % p; // Update x if it is more than or
                // equal to p

    if (x == 0) return 0; // In case x is divisible by p;

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = (res*x) % p;

        // y must be even now
        y = y>>1; // y = y/2
        x = (x*x) % p;
    }
    return res;
}

////////// Segment Tree construction //////////////////////

// A recursive function that constructs
// Segment Tree for array[ss..se].
// si is index of current node in segment tree st
long long constructSTUtil(long long arr[], long long ss, long long se,
                                long long *st, long long si)
{
    // If there is one element in array,
    // store it in current node of
    // segment tree and return
    if (ss == se)
    {
        st[si] = arr[ss];
        return arr[ss];
    }

    // If there are more than one elements,
    // then recur for left and right subtrees
    // and store the minimum of two values in this node
   long long mid = ss + (se -ss)/2;
    st[si] = min(constructSTUtil(arr, ss, mid, st, si*2+1),
                    constructSTUtil(arr, mid+1, se, st, si*2+2));
    return st[si];
}

/* Function to construct segment tree
from given array. This function allocates
memory for segment tree and calls constructSTUtil() to
fill the allocated memory */
long long *constructST(long long arr[], long long n)
{
    // Allocate memory for segment tree

    //Height of segment tree
    long long x = (long long)(ceil(log2(n)));

    // Maximum size of segment tree
    long long max_size = 2*(long long)pow(2, x) - 1;

    long long *st = new long long[max_size];

    // Fill the allocated memory st
    constructSTUtil(arr, 0, n-1, st, 0);

    // Return the constructed segment tree
    return st;
}

/////////////////////******************///////////////////////////////

////////// Segment Tree min val in a range Query ////////////////////

/* A recursive function to get the
minimum value in a given range
of array indexes. The following
are parameters for this function.

    st --> Pointer to segment tree
    index --> Index of current node in the
           segment tree. Initially 0 is
           passed as root is always at index 0
    ss & se --> Starting and ending indexes
                of the segment represented
                by current node, i.e., st[index]
    qs & qe --> Starting and ending indexes of query range */
long long RMQ(long long *st, long long ss, long long se, long long qs, long long qe, long long index)
{
    // If segment of this node is a part
    // of given range, then return
    // the min of the segment
    if (qs <= ss && qe >= se)
        return st[index];

    // If segment of this node
    // is outside the given range
    if (se < qs || ss > qe)
        return INT_MAX;

    // If a part of this segment
    // overlaps with the given range
    long long mid = ss + (se -ss)/2;
    return min(RMQ(st, ss, mid, qs, qe, 2*index+1),
                RMQ(st, mid+1, se, qs, qe, 2*index+2));
}
struct trap
{
	long long l,r,d;
};

long long reversDigits(long long num)
{
    long long rev_num = 0;
    while(num > 0)
    {
        rev_num = rev_num*10 + num%10;
        num = num/10;
    }
    return rev_num;
}
struct workout
{
	long long diff;
	pair<long long,long long> p;
};
long long ok(long long x,long long A[],long long n,long long k)
{long long req=0,i;
	for(i=0;i<n;++i)
	{
		req+=(ceil((double)A[i]/(double)x)-1);
	}

	return(req<=k);
}

int main()
{
	#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	//int tt = clock();
	#endif

	long long n=1009999;
	//cout<<(n*(n+1))/2<<"\n";
	long long t;
	cin>>t;
	while(t--)
	{
		long long a,b,n,m,l1=0,x,y,l2;
		cin>>a>>b>>m>>n;
		if(a+b<n+m)
			cout<<"No\n";
		else
		{
			if(a>b)
			{
				if(a!=b+1)
				{
					if(a>=m && b>=n)
					{
						cout<<"Yes\n";
						continue;
					}
					else
					{
						cout<<"No\n";
						continue;
					}

				}
				else
					{
						if((a>=m && b>=n) || (a+1>=m && b-1>=n))
						{
							cout<<"Yes\n";
							continue;
						}
						else
						{
						cout<<"No\n";
						continue;
						}
					}

			}
			else if(b>a)
			{
				if(b!=a+1)
				{
					if(b>=m && a>=n)
					{
						cout<<"Yes\n";
						continue;
					}
					else
					{
						cout<<"No\n";
						continue;
					}

				}
				else
				{
					if((b>=m && a>=n) || (b+1==m && a-1>=n))
						{
							cout<<"Yes\n";
							continue;
						}
						else
					{
						cout<<"No\n";
						continue;
					}
				}
			}
			else
			{
				if((a>=m && b>=n) || (m<=a+1 && n<=b-1))
					cout<<"Yes\n";
				else
					cout<<"No\n";
			}
		}
	}
return 0;

}


#include <bits/stdc++.h>
#include<math.h>
#include<stack>
#include<string.h>
#include<bitset>
using namespace std;
//typedef unsigned long long int ull;
const long double pi=2*acos(0.0);
long long infinity=std::numeric_limits<long long>::max();
//long long infinity=400000;
const long long mod=1000000007;
const long long MAXN=1;
const long long max_INT=2000000;
long long binary_search(long long dp[],long long n,long long p)
{
	long long l,r,mid;

	l=0;r=n-1;

	while(l<=r && l>=0 && l<=n-1 && r>=0 && r<=n-1)
	{
		mid=(l+r)/2;
		if(dp[mid]>=p)
			{

				r=mid-1;
			}
			else //if(dp[mid]<p)
			{
				l=mid+1;

			}
			/*else
				return mid;*/

//cout<<l<<" "<<r<<" "<<mid<<"\n";
	}
	return l;
}

int extended_euclid(int a,int b,int& x,int& y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int x1,y1,g;
	g=extended_euclid(b,a%b,x1,y1);
	x=y1;
	y=x1-y1*(a/b);

	return g;

}

bool linear_diaphantine(int a,int b,int c,int&x,int&y,int& g)
{
	int x1,y1;
	g=extended_euclid(abs(a),abs(b),x1,y1);

	//cout<<g<<" "<<x1<<" "<<y1<<"\n";
	if(c%g)
	{
		return false;
	}
	x=(c/g)*x1;
	y=(c/g)*y1;
	if(a<0)
		x=-x;
	if(b<0)
		y=-y;

	return true;
}

int spf[MAXN];

// Calculating SPF (Smallest Prime Factor) for every
// number till MAXN.
// Time Complexity : O(nloglogn)
void sieve()
{
    spf[1] = 1;

    for (int i=2; i<MAXN; i++)

        // marking smallest prime factor for every
        // number to be itself.
        {spf[i] = i;

        }

    // separately marking spf for every even
    // number as 2
    for (int i=4; i<MAXN; i+=2)
        spf[i] = 2;

    for (int i=3; i*i<MAXN; i++)
    {
        // checking if i is prime

        if (spf[i] == i)
        { //m1[i]=1;

            // marking SPF for all numbers divisible by i

            for (int j=i*i; j<MAXN; j+=i)

                // marking spf[j] if it is not
                // previously marked
                {
                	if (spf[j]==j)
                    {
                    	spf[j] = i;

                    }
                }
        }
    }

}
bool prime[MAXN];
void SieveOfEratosthenes(long long n=MAXN-1)
{
    // Create a boolean array "prime[0..n]" and initialize
    // all entries it as true. A value in prime[i] will
    // finally be false if i is Not a prime, else true.

    memset(prime, true, sizeof(prime));
  	prime[1]=false;
    for (long long p=2; p*p<=n; p++)
    {
        // If prime[p] is not changed, then it is a prime
        if (prime[p] == true)
        {
            // Update all multiples of p greater than or
            // equal to the square of it
            // numbers which are multiple of p and are
            // less than p^2 are already been marked.
            for (long long i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }

    // Print all prime numbers

}

  long long power(long long x, long long y, long long p)
{
    long long res = 1;     // Initialize result

    x = x % p; // Update x if it is more than or
                // equal to p

    if (x == 0) return 0; // In case x is divisible by p;

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = (res*x) % p;

        // y must be even now
        y = y>>1; // y = y/2
        x = (x*x) % p;
    }
    return res;
}

////////// Segment Tree construction //////////////////////

// A recursive function that constructs
// Segment Tree for array[ss..se].
// si is index of current node in segment tree st
long long constructSTUtil(long long arr[], long long ss, long long se,
                                long long *st, long long si)
{
    // If there is one element in array,
    // store it in current node of
    // segment tree and return
    if (ss == se)
    {
        st[si] = arr[ss];
        return arr[ss];
    }

    // If there are more than one elements,
    // then recur for left and right subtrees
    // and store the minimum of two values in this node
   long long mid = ss + (se -ss)/2;
    st[si] = min(constructSTUtil(arr, ss, mid, st, si*2+1),
                    constructSTUtil(arr, mid+1, se, st, si*2+2));
    return st[si];
}

/* Function to construct segment tree
from given array. This function allocates
memory for segment tree and calls constructSTUtil() to
fill the allocated memory */
long long *constructST(long long arr[], long long n)
{
    // Allocate memory for segment tree

    //Height of segment tree
    long long x = (long long)(ceil(log2(n)));

    // Maximum size of segment tree
    long long max_size = 2*(long long)pow(2, x) - 1;

    long long *st = new long long[max_size];

    // Fill the allocated memory st
    constructSTUtil(arr, 0, n-1, st, 0);

    // Return the constructed segment tree
    return st;
}

/////////////////////******************///////////////////////////////

////////// Segment Tree min val in a range Query ////////////////////

/* A recursive function to get the
minimum value in a given range
of array indexes. The following
are parameters for this function.

    st --> Pointer to segment tree
    index --> Index of current node in the
           segment tree. Initially 0 is
           passed as root is always at index 0
    ss & se --> Starting and ending indexes
                of the segment represented
                by current node, i.e., st[index]
    qs & qe --> Starting and ending indexes of query range */
long long RMQ(long long *st, long long ss, long long se, long long qs, long long qe, long long index)
{
    // If segment of this node is a part
    // of given range, then return
    // the min of the segment
    if (qs <= ss && qe >= se)
        return st[index];

    // If segment of this node
    // is outside the given range
    if (se < qs || ss > qe)
        return INT_MAX;

    // If a part of this segment
    // overlaps with the given range
    long long mid = ss + (se -ss)/2;
    return min(RMQ(st, ss, mid, qs, qe, 2*index+1),
                RMQ(st, mid+1, se, qs, qe, 2*index+2));
}
struct trap
{
	long long l,r,d;
};

long long reversDigits(long long num)
{
    long long rev_num = 0;
    while(num > 0)
    {
        rev_num = rev_num*10 + num%10;
        num = num/10;
    }
    return rev_num;
}
struct workout
{
	long long diff;
	pair<long long,long long> p;
};
long long ok(long long x,long long A[],long long n,long long k)
{long long req=0,i;
	for(i=0;i<n;++i)
	{
		req+=(ceil((double)A[i]/(double)x)-1);
	}

	return(req<=k);
}

int main()
{
	#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	//int tt = clock();
	#endif

	long long n=1009999;
	//cout<<(n*(n+1))/2<<"\n";
	long long t;
	cin>>t;
	while(t--)
	{
		long long a,b,n,m,l1=0,x,y,l2;
		cin>>a>>b>>m>>n;
		if(a+b<n+m)
			cout<<"No\n";
		else
		{
			if(a>b)
			{	if(b>=n && a>=m)
				{
					cout<<"Yes\n";
					continue;
				}
				l2=min(a-b,m);
				a-=l2;
				m-=l2;
				if(a==b)
				{if((a>=m && b>=n) || (m==a+1 && n<=b-1))
					cout<<"Yes\n";
				else
					cout<<"No\n";
				}
				else
				{

						if(b>=n && a>=m)
						{
							cout<<"Yes\n";
						}
						else
							cout<<"No\n";

				}
			}
			else if(b>a)
			{	if(a>=n && b>=m)
				{
					cout<<"Yes\n";
					continue;
				}
				//x=b-a;
				//y=max(l1,m-x);
				l2=min(b-a,m);
				//cout<<l2<<"\n";
				b-=l2;
				m-=l2;
				//cout<<a<<" "<<b<<" "<<m<<" "<<n<<"\n";
				if(a==b)
				{if((a>=m && b>=n)|| (m==a+1 && n<=b-1))
					cout<<"Yes\n";
				else
					cout<<"No\n";
				}
				else
				{
					//cout<<a<<" "<<b<<" "<<m<<" "<<n<<"\n";
						if(a>=n && b>=m)
						{
							cout<<"Yes\n";
						}
						else
							cout<<"No\n";

				}
			}
			else
			{
				if((a>=m && b>=n) || (m==a+1 && n<=b-1))
					cout<<"Yes\n";
				else
					cout<<"No\n";
			}
		}
	}
return 0;

}


#include <bits/stdc++.h>
#include<math.h>
#include<stack>
#include<string.h>
#include<bitset>
using namespace std;
//typedef unsigned long long int ull;
const long double pi=2*acos(0.0);
long long infinity=std::numeric_limits<long long>::max();
//long long infinity=400000;
const long long mod=1000000007;
const long long MAXN=1;
const long long max_INT=2000000;
long long binary_search(long long dp[],long long n,long long p)
{
	long long l,r,mid;

	l=0;r=n-1;

	while(l<=r && l>=0 && l<=n-1 && r>=0 && r<=n-1)
	{
		mid=(l+r)/2;
		if(dp[mid]>=p)
			{

				r=mid-1;
			}
			else //if(dp[mid]<p)
			{
				l=mid+1;

			}
			/*else
				return mid;*/

//cout<<l<<" "<<r<<" "<<mid<<"\n";
	}
	return l;
}

int extended_euclid(int a,int b,int& x,int& y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int x1,y1,g;
	g=extended_euclid(b,a%b,x1,y1);
	x=y1;
	y=x1-y1*(a/b);

	return g;

}

bool linear_diaphantine(int a,int b,int c,int&x,int&y,int& g)
{
	int x1,y1;
	g=extended_euclid(abs(a),abs(b),x1,y1);

	//cout<<g<<" "<<x1<<" "<<y1<<"\n";
	if(c%g)
	{
		return false;
	}
	x=(c/g)*x1;
	y=(c/g)*y1;
	if(a<0)
		x=-x;
	if(b<0)
		y=-y;

	return true;
}

int spf[MAXN];

// Calculating SPF (Smallest Prime Factor) for every
// number till MAXN.
// Time Complexity : O(nloglogn)
void sieve()
{
    spf[1] = 1;

    for (int i=2; i<MAXN; i++)

        // marking smallest prime factor for every
        // number to be itself.
        {spf[i] = i;

        }

    // separately marking spf for every even
    // number as 2
    for (int i=4; i<MAXN; i+=2)
        spf[i] = 2;

    for (int i=3; i*i<MAXN; i++)
    {
        // checking if i is prime

        if (spf[i] == i)
        { //m1[i]=1;

            // marking SPF for all numbers divisible by i

            for (int j=i*i; j<MAXN; j+=i)

                // marking spf[j] if it is not
                // previously marked
                {
                	if (spf[j]==j)
                    {
                    	spf[j] = i;

                    }
                }
        }
    }

}
bool prime[MAXN];
void SieveOfEratosthenes(long long n=MAXN-1)
{
    // Create a boolean array "prime[0..n]" and initialize
    // all entries it as true. A value in prime[i] will
    // finally be false if i is Not a prime, else true.

    memset(prime, true, sizeof(prime));
  	prime[1]=false;
    for (long long p=2; p*p<=n; p++)
    {
        // If prime[p] is not changed, then it is a prime
        if (prime[p] == true)
        {
            // Update all multiples of p greater than or
            // equal to the square of it
            // numbers which are multiple of p and are
            // less than p^2 are already been marked.
            for (long long i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }

    // Print all prime numbers

}

  long long power(long long x, long long y, long long p)
{
    long long res = 1;     // Initialize result

    x = x % p; // Update x if it is more than or
                // equal to p

    if (x == 0) return 0; // In case x is divisible by p;

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = (res*x) % p;

        // y must be even now
        y = y>>1; // y = y/2
        x = (x*x) % p;
    }
    return res;
}

////////// Segment Tree construction //////////////////////

// A recursive function that constructs
// Segment Tree for array[ss..se].
// si is index of current node in segment tree st
long long constructSTUtil(long long arr[], long long ss, long long se,
                                long long *st, long long si)
{
    // If there is one element in array,
    // store it in current node of
    // segment tree and return
    if (ss == se)
    {
        st[si] = arr[ss];
        return arr[ss];
    }

    // If there are more than one elements,
    // then recur for left and right subtrees
    // and store the minimum of two values in this node
   long long mid = ss + (se -ss)/2;
    st[si] = min(constructSTUtil(arr, ss, mid, st, si*2+1),
                    constructSTUtil(arr, mid+1, se, st, si*2+2));
    return st[si];
}

/* Function to construct segment tree
from given array. This function allocates
memory for segment tree and calls constructSTUtil() to
fill the allocated memory */
long long *constructST(long long arr[], long long n)
{
    // Allocate memory for segment tree

    //Height of segment tree
    long long x = (long long)(ceil(log2(n)));

    // Maximum size of segment tree
    long long max_size = 2*(long long)pow(2, x) - 1;

    long long *st = new long long[max_size];

    // Fill the allocated memory st
    constructSTUtil(arr, 0, n-1, st, 0);

    // Return the constructed segment tree
    return st;
}

/////////////////////******************///////////////////////////////

////////// Segment Tree min val in a range Query ////////////////////

/* A recursive function to get the
minimum value in a given range
of array indexes. The following
are parameters for this function.

    st --> Pointer to segment tree
    index --> Index of current node in the
           segment tree. Initially 0 is
           passed as root is always at index 0
    ss & se --> Starting and ending indexes
                of the segment represented
                by current node, i.e., st[index]
    qs & qe --> Starting and ending indexes of query range */
long long RMQ(long long *st, long long ss, long long se, long long qs, long long qe, long long index)
{
    // If segment of this node is a part
    // of given range, then return
    // the min of the segment
    if (qs <= ss && qe >= se)
        return st[index];

    // If segment of this node
    // is outside the given range
    if (se < qs || ss > qe)
        return INT_MAX;

    // If a part of this segment
    // overlaps with the given range
    long long mid = ss + (se -ss)/2;
    return min(RMQ(st, ss, mid, qs, qe, 2*index+1),
                RMQ(st, mid+1, se, qs, qe, 2*index+2));
}
struct trap
{
	long long l,r,d;
};

long long reversDigits(long long num)
{
    long long rev_num = 0;
    while(num > 0)
    {
        rev_num = rev_num*10 + num%10;
        num = num/10;
    }
    return rev_num;
}
struct workout
{
	long long diff;
	pair<long long,long long> p;
};
long long ok(long long x,long long A[],long long n,long long k)
{long long req=0,i;
	for(i=0;i<n;++i)
	{
		req+=(ceil((double)A[i]/(double)x)-1);
	}

	return(req<=k);
}

int main()
{
	#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	//int tt = clock();
	#endif

	long long n=1009999;
	//cout<<(n*(n+1))/2<<"\n";
	long long t;
	cin>>t;
	while(t--)
	{
		long long a,b,n,m,l1=0,x,y,l2;
		cin>>a>>b>>m>>n;
		if(a+b<n+m)
			cout<<"No\n";
		else
		{
			if(a>b)
			{	if(b>=n && a>=m)
				{
					cout<<"Yes\n";
					continue;
				}
				l2=min(b-a,m);
				a-=l2;
				m-=l2;
				if(a==b)
				{if(a>=m && b>=n)
					cout<<"Yes\n";
				else
					cout<<"No\n";
				}
				else
				{

						if(b>=n && a>=m)
						{
							cout<<"Yes\n";
						}
						else
							cout<<"No\n";

				}
			}
			else if(b>a)
			{	if(a>=n && b>=m)
				{
					cout<<"Yes\n";
					continue;
				}
				//x=b-a;
				//y=max(l1,m-x);
				l2=min(b-a,m);
				//cout<<l2<<"\n";
				b-=l2;
				m-=l2;
				//cout<<a<<" "<<b<<" "<<m<<" "<<n<<"\n";
				if(a==b)
				{if(a>=m && b>=n)
					cout<<"Yes\n";
				else
					cout<<"No\n";
				}
				else
				{
					//cout<<a<<" "<<b<<" "<<m<<" "<<n<<"\n";
						if(a>=n && b>=m)
						{
							cout<<"Yes\n";
						}
						else
							cout<<"No\n";

				}
			}
			else
			{
				if(a>=m && b>=n)
					cout<<"Yes\n";
				else
					cout<<"No\n";
			}
		}
	}
return 0;

}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(b > a){
      b -= min(f, n);
      n -= min(f, n);
    }else if(a > b){
      a -= min(f, n);
      n -= min(f, n);
    }
    if(a == b && a >= n && b >= m) flag = 1;
    if((a > b || a < b) && a >= m) flag = 1;
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(b > a){
      b -= min(f, n);
      n -= min(f, n);
    }else if(a > b){
      a -= min(f, n);
      n -= min(f, n);
    }
    //cout << a << ' ' << b << ' ' << n << ' ' << m << '\n';
    if(a == b && (a + b) >= m && (a + b - m) >= n) flag = 1;
    if((a > b || a < b) && a >= m) flag = 1;
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(a > b){
      if(f <= n && a >= n && b >= m) flag = 1;
      else if(f > n && b >= m) flag = 1;
    }else if(b >= a){
      if(f <= m && b >= m && a >= n) flag = 1;
      else if(f > n && a >= m) flag = 1;
    }
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(a > b){
      if(f <= n && a >= n && b >= m) flag = 1;
      else if(f > n && b >= m) flag = 1;
    }else if(b >= a){
      if(f <= n && a >= (n - f) && b >= m) flag = 1;
      else if(f > n && a >= m) flag = 1;
    }
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(b > a){
      b -= min(f, n);
      n -= min(f, n);
    }else if(a > b){
      a -= min(f, n);
      n -= min(f, n);
    }
    if(a == b && a >= n && b >= m) flag = 1;
    if(a < b && a >= m) flag = 1;
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(a > b){
      if(f <= n && a >= n && b >= m) flag = 1;
      else if(f > n && b >= m) flag = 1;
    }else if(b >= a){
      if(f <= m && b >= m && a >= n) flag = 1;
      else if(f > n && a >= m) flag = 1;
    }
    cout << flag << '\n';
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(b > a){
      b -= min(f, n);
      n -= min(f, n);
    }else if(a > b){
      a -= min(f, n);
      n -= min(f, n);
    }
    //cout << a << ' ' << b << ' ' << n << ' ' << m << '\n';
    if(a == b && a >= m && (a - m + b) >= n) flag = 1;
    if((a > b || a < b) && a >= m) flag = 1;
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


#include <bits/stdc++.h>

using namespace std;

const int MXN = (int)2e5 + 7;

typedef long long llong;

int t;

int main(){
  cin >> t;
  while(t--){
    llong n, m, a, b;
    cin >> a >> b >> n >> m;
    if((a + b) < (n + m)){
      cout << "No\n";
      continue;
    }
    bool flag = 0;
    llong f = abs(a - b);
    if(b > a){
      b -= min(f, n);
      n -= min(f, n);
    }else if(a > b){
      a -= min(f, n);
      n -= min(f, n);
    }
    //cout << a << ' ' << b << ' ' << n << ' ' << m << '\n';
    if(a == b && a >= m && (a - m + b) >= n) flag = 1;
    if(a > b && b >= m || b > a && a >= m) flag = 1;
    cout << (flag ? "Yes\n" : "No\n");
  }
	return 0;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition_1(ll v, ll c, ll n, ll m)
{
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition_1(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition_1(ll v, ll c, ll n, ll m)
{
        ll p;
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(n)
                        {
                                n--;
                                if(c) c--;
                                else return false;
                                if(m)
                                {
                                        k= min(c,m);
                                        c-=k;//
                                        m-=k;
                                        p=c;
                                        if(m)
                                        {
                                                k=min(v,n);
                                                n-=k;
                                                v-=k;
                                                m-=v;
                                                p=min(v,c);
                                                if(m) return false;
                                        }
                                }
                                if(n)
                                {
                                        if(n> p*2 + (v-p)) return false;
                                        else return true;
                                }
                                else return true;
                        }
                        else
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        /*if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }*/
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                /*else
                {
                        if(max(n,m)<= v*2) return true;
                        else return false;
                }*/
                else
                {
                         if(n)
                        {
                                n--;
                                if(c) c--;
                                else return false;
                                if(m)
                                {
                                        k= min(c,m);
                                        c-=k;//
                                        m-=k;
                                        p=c;
                                        if(m)
                                        {
                                                k=min(v,n);
                                                n-=k;
                                                v-=k;
                                                m-=v;
                                                p=min(v,c);
                                                if(m) return false;
                                        }
                                }
                                if(n)
                                {
                                        if(n> p*2 + (v-p)) return false;
                                        else return true;
                                }
                                else return true;
                        }
                        else
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }

                        /*if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }*/
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition_1(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition(ll v, ll c, ll n, ll m)
{
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(max(n,m)<= v) return true;
                        else return false;
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(max(n,m)<= v) return true;
                        else return false;
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(min(v,c)>=m) return "Yes";
        return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition_1(ll v, ll c, ll n, ll m)
{
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(max(n,m)<= v*2) return true;
                        else return false;
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(max(n,m)<= v*2) return true;
                        else return false;
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition_1(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition(ll v, ll c, ll n, ll m)
{
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                }
                else
                {
                        if(max(n,m)<= v) return true;
                        else return false;
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                }
                else
                {
                        if(max(n,m)<= v) return true;
                        else return false;
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


/*
                IftekharMd.Shishir
                Dept. of Information and Communication Engineering
                University of Rajshahi
*/

#include<bits/stdc++.h>

#define ll  long long
#define ull  unsigned long long
#define ld  long double
#define f(i,n)  for(i=0;i<n;i++)
#define F(i,n)  for(i=n-1;i>=0;i--)
#define fa(i,a,b)  for(i=a;i<=b;i++)
#define Fa(i,a,b)  for(i=a;i>=b;i--)
#define LT(i,a,n)  f(i,n)cout<<a[i]<<" "; cout<<endl;

#define pb(x)  push_back(x)
#define pob()  pop_back()
#define all(a)  a.begin(),a.end()
#define sor(a)  sort(a.begin(),a.end())
#define rev(a)  reverse(a.begin(),a.end())
#define mem(a,x)  memset(a,x,sizeof(a))
#define maxElement max_element
#define minElement  min_element
//[ ll *it; it = maxElement(a,a+n); ]

#define bs  binary_search
#define lb  lower_bound
#define ub  upper_bound
#define mp  make_pair
#define txtIO  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define txtTest freopen("C:/Users/Iftekhar/Documents/what/input.txt", "r", stdin);
#define FastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
#define TestCase  ll t;cin>>t;while(t--)
#define points(x)  fixed<<setprecision(x)
#define gcd(x,y)  __gcd(x,y)
#define scd(a,x,y)  a/gcd(x,y);
#define nl  cout<<endl;
#define done  return 0

const double PI= 2*acos(0.0);
const long long MOD= 1000000007;
const long long MAX = 32000;
// stringstream demo(str);  demo >> x;
// stringstream demo;  demo << x;  name=demo.str();

using namespace std;

bool condition_1(ll v, ll c, ll n, ll m)
{
        ll p;
        if(v>c)
        {
                ll k = min((v-c),n);
                v-=k;
                n-=k;
                //cout<<n<<" "<<m<<endl;
                if(v>c)
                {
                        if(m)
                        {
                                k = min(c,m);
                                c-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                else
                {
                        if(n)
                        {
                                n--;
                                if(c) c--;
                                else return false;
                                if(m)
                                {
                                        k= min(c,m);
                                        c-=k;//
                                        m-=k;
                                        p=c;
                                        if(m) return false;
                                }
                                if(n)
                                {
                                        if(n> p*2 + (v-p)) return false;
                                        else return true;
                                }
                        }
                        else
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        /*if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }*/
                }
        }
        else
        {
                ll k = min((c-v),n);
                c-=k;
                n-=k;
                if(c>v)
                {
                        if(m)
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }
                        else return true;
                }
                /*else
                {
                        if(max(n,m)<= v*2) return true;
                        else return false;
                }*/
                else
                {
                         if(n)
                        {
                                n--;
                                if(c) c--;
                                else return false;
                                if(m)
                                {
                                        k= min(c,m);
                                        c-=k;//
                                        m-=k;
                                        p=c;
                                        if(m) return false;
                                }
                                if(n)
                                {
                                        if(n> p*2 + (v-p)) return false;
                                        else return true;
                                }
                        }
                        else
                        {
                                k = min(v,m);
                                v-=k;
                                m-=k;
                                if(m) return false;
                                else return true;
                        }

                        /*if(!n)
                        {
                                if(max(n,m)<= v) return true;
                                else return false;
                        }
                        else
                        {
                                ll p = v*2;
                                if(n>p) return false;
                                else
                                {
                                        if(n%2==0)
                                        {
                                                if(m> (v-(n/2))) return false;
                                                else return true;
                                        }
                                        else
                                        {
                                                if(m> (v-(n/2))-1) return false;
                                                else return true;
                                        }
                                }
                        }*/
                }
        }
}

string fun(ll v, ll c, ll n, ll m)
{
        if(v+c < n+m) return "No";
        if(v+c>=n+m && min(v,c)>= max(n,m)) return "Yes";
        if(condition_1(v,c,n,m)) return "Yes";
        else return "No";
}

int main()
{
        FastIO;
        //txtTest;
        ll a,b,n,m;
        TestCase
        {
                cin>>a>>b>>n>>m;
                cout<< fun(a,b,n,m) <<endl;
        }
        done;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<m && (b-a)>n) no;
            else{
                if(a>=m) yes;
                else{
                    if(m<=n) yes;
                    else no;
                }
            }
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<=m && (b-a)>n) no;
            else yes;
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<=n && (b-a)>m) no;
            else yes;
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<m && (b-a)>n) no;
            else{
                if(a>=m) yes;
                else{
                    b-=(b-a);
                    n-=(b-a);
                    if(m<=n orr m-n==-1) yes;
                    else no;
                }
            }
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<m && (b-a)>n) no;
            else{
                if(a>=m) yes;
                else{
                    b-=(b-a);
                    n-=(b-a);
                    if(m<=n orr m-n==1) yes;
                    else no;
                }
            }
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<m && (b-a)>n) no;
            else yes;
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(a>b) swap(a,b);
            if(a<m && (b-a)>n) no;
            else{
                if(a>=m) yes;
                else{
                    b-=(b-a);
                    n-=(b-a);
                    if(m<=n) yes;
                    else no;
                }
            }
        }

    }
    return 0;
}


#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fr(m) for(int i=0; i<m; i++)
#define frj(m) for(int j=0; j<m; j++)
#define frr(n) for(int i=n; i>=0; i--)
#define pb push_back
#define orr ||
#define nl printf("\n")
#define sci(n) scanf("%lld ", &n)
#define scl(n) scanf("%lld", &n)
#define pri(n) printf("%d", n)
#define prl(n) printf("%lld", n)
#define prc(n) printf("%c", n)
#define prs printf(" ")
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define inp freopen("input.txt", "r", stdin)
#define outp freopen("output.txt", "w", stdout)
#define debug(arr,n) for(int i=0; i<n; i++) cout<<arr[i]<<" "
#define debugr(arr,s,e) for(int i=s; i<=e; i++) cout<<arr[i]<<" "

int main()
{
    ll t;
    cin>>t;
    while(t--){
        ll a,b,n,m;
        cin>>a>>b>>n>>m;
        if(a+b<n+m) no;
        else{
            if(m>min(a,b)) no;
            else yes;
        }
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
    int a,b,m,n,c;
    cin>>a>>b>>m>>n;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=n){
        cout<<"yes";
    }else{
        cout<<"no";
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
}


#include<iostream>
using namespace std;
void possible(){
    int a,b,m,n,c;
    cin>>a>>b>>m>>n;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=n){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
}


#include<iostream>
using namespace std;
void possible(){
   long int a,b,m,n,c;
    cin>>a>>b>>n>>m;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m&&n+m>0){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
   long int a,b,m,n,c;
    cin>>a>>b>>m>>n;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
    int a,b,m,n,c;
    cin>>a>>b>>n>>m;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
   unsigned int a,b,m,n,c;
    cin>>a>>b>>n>>m;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m&&n+m>0){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
   long long int a,b,m,n,c;
    cin>>a>>b>>n>>m;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m&&n+m>0){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
    int a,b,m,n,c;
    cin>>a>>b>>m>>n;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=n){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
   double a,b,m,n,c;
    cin>>a>>b>>n>>m;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m&&n+m>0){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<iostream>
using namespace std;
void possible(){
   long int a,b,m,n,c;
    cin>>a>>b>>m>>n;
    a>b?c=b:c=a;
    if(a+b>=m+n&&c>=m&&n+m>0){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}
int main(){
    int t,i;
    cin>>t;
    for(i=1;i<=t;i++){
        possible();
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && c==0)
         cout<<"No";
        else if(v<c && v==0)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && c==0)
         cout<<"No";
        else if(v<c && v==0)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && m>v)
         cout<<"No";
        else if(v<c && n>c)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if((v+c)<(n+m))
         cout<<"No";
        else if(v<c && n>c)
         cout<<"No";
        else if(v<c && m>v)
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if( (v+c)<(n+m) || min(v,c)<m )
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && n>c)
         cout<<"No";
        else if(v<c && m>v)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v>c && c<m)
          cout<<"No";
        else if(v>c && v<n)
          cout<<"No";
        if(v<c && m>v)
         cout<<"No";
        else if(v<c && n>c)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && m>v)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else if(v<c && n>c)
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && c==0 && n>0)
         cout<<"No";
        else if(v<c && v==0 && m>0)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v<c && c==0 && m>0)
         cout<<"No";
        else if(v<c && v==0 && n>0)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if(v>c && c<m)
          cout<<"No";
        else if(v>c && v<n)
          cout<<"No";
        else if(v<c && m>v)
         cout<<"No";
        else if(v<c && n>c)
         cout<<"No";
        else if((v+c)<(n+m))
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    long v,c,n,m;
    cin>>T;
    while(T--){
        cin>>v>>c>>n>>m;
        if( (v+c)<(n+m) || min(v,c)<m )
         cout<<"No";
        else
         cout<<"Yes";
       cout<<"\n";
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    // if((a+b>=n+m) && (a>=m && b>=m))
    // cout<<"YES"<<endl;

    else if((a+b<n+m) || (b<m) )
    cout<<"NO"<<endl;

    else {
    cout<<"YES"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    //a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    // if((a+b>=n+m) && a>=m && b>=m)
    // cout<<"YES"<<endl;

   if((a+b>=n+m) && (b>=m) )
    cout<<"yes"<<endl;

    else
    cout<<"no"<<endl;

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b<n+m) || (b<m) )
    cout<<"NO"<<endl;

    else {
    cout<<"YES"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b>=n+m) && (b>=m) )
    cout<<"YES"<<endl;

    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    // if((a+b>=n+m) && a>=m && b>=m)
    // cout<<"YES"<<endl;

   if((a+b>=n+m) && (b>=m) )
    cout<<"yes"<<endl;

    else {
    cout<<"no"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
     if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b>=n+m) && (b>=m) )
    cout<<"YES"<<endl;

    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
     if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b>=n+m) && (b>=m) )
    cout<<"YES"<<endl;
    else if((a+b>=n+m) && (a-n<b))
   cout<<"YES"<<endl;
    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m || b>=m))
    cout<<"YES"<<endl;

    // else if((a+b>=n+m) && (b>=m) )
    // cout<<"YES"<<endl;

    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b>=n+m) && (b>=m) )
    cout<<"YES"<<endl;
    else if((a+b>=n+m) && (m<=n) && (n-a+b<=m) )
   cout<<"YES"<<endl;
    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include<stdio.h>

int main(){
  long long t,a,b,n,m,k;
  scanf("%lld",&t);
  while(t>0){
    t--;
    scanf("%lld%lld%lld%lld",&a,&b,&n,&m);
    if(a>b){k=a;a=b;b=k;}
    if(a<m){printf("No\n");continue;}
    if(a+b<n+m){printf("No\n");continue;}
    printf("Yes\n");
  }
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m && b>=m))
    cout<<"YES"<<endl;

    else if((a+b>=n+m) && (b>m) )
    cout<<"YES"<<endl;

    else {
    cout<<"NO"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
 //   a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    if((a+b>=n+m) && (a>=m || b>=m))
    cout<<"yes"<<endl;

     else if((a+b>=n+m) && (b>=m) )
     cout<<"yes"<<endl;

    else {
    cout<<"no"<<endl;
    }

    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
bool isPrime(long long int n)
{

    if (n <= 1)  return false;
    if (n <= 3)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long long int i=5; i*i<=n; i=i+6)
        if (n%i == 0 || n%(i+2) == 0)
           return false;

    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
     long long int n,sum=0,m,curr=0,k,j=0,l,neg=0,pos=0,p=0,a=0,b=0,x=1000000007,count=0;
    cin>>a>>b>>n>>m;
    a=a%x,b=b%x,n=n%x,m=m%x;
    if(a<b)
    swap(a,b);
    // if((a+b>=n+m) && (a>=m && b>=m))
    // cout<<"YES"<<endl;

    if((a+b<n+m) || (b<m) )
    cout<<"NO"<<endl;

    else {
    cout<<"YES"<<endl;
    }

    }
    return 0;
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (min(a, b) >= m && max(a, b) >= n) {
			cout << "Yes\n";
		}
		else cout << "No\n";
	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (a >= b) {
			if (m <= b && n <= a) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}
		else {
			if (m <= a && n <= b) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}

	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (min(a, b) >= m && max(a, b+1) > n) {
			cout << "Yes\n";
		}
		else cout << "No\n";
	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (min(a, b) >= m && max(a, b+1) >= n) {
			cout << "Yes\n";
		}
		else cout << "No\n";
	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (a > b) {
			b -= m;
			if (b < 0) {
				cout << "No\n";
				continue;
			}
			if (n > a+b) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}
		else {
			a -= m;
			if (a < 0) {
				cout << "No\n";
				continue;
			}
			if (n > b+a) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}

	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (a > b) {
			if (m <= b && n <= a) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}
		else {
			if (m <= a && n <= b) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}
	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (a > b) {
			b -= m;
			if (b < 0) {
				cout << "No\n";
				continue;
			}
			if (n > a) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}
		else {
			a -= m;
			if (a < 0) {
				cout << "No\n";
				continue;
			}
			if (n > b) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}

	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (a > b) {
			b -= m;
			if (b < 0) {
				cout << "No\n";
				continue;
			}
			if (n > a) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}
		else {
			a -= m;
			if (a < 0) {
				cout << "No\n";
				continue;
			}
			if (n > b) {
				cout << "No\n";
				continue;
			}
			cout << "Yes\n";
		}

	}
}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
	int64_t t;
	cin >> t;
	while (t--) {
		int64_t a, b, n, m;
		cin >> a >> b >> n >> m;
		if (n + m > a + b) {
			cout << "No\n";
			continue;
		}
		if (a >= b) {
			if (m <= b && n <= a) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}
		else {
			if (m <= a && n <= b) {
				cout << "Yes\n";
			}
			else cout << "No\n";
		}
	}
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) > abs(n-m)) {
            if (min(a, b) >= max(n, m)) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if ((a==0 && m >0) || (b==0 && n>0)) {
            cout << "No" << endl;
            continue;
        }
        cout << "Yes" << endl;
    }
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (a > b) {
            ll gg = (a-b);
            if (m < gg && b < n) {
                cout << "No" << endl;
                continue;
            }
        }
        if (a < b) {
            ll gg = (b-a);
            if (n < gg && a < m) {
                cout << "No" << endl;
                continue;
            }
        }
        cout << "Yes" << endl;
    }
    return 0;
}


#include <iostream>
using namespace std;
int main()
{
    int a, b, n, m;
    int t;
    cin >> t;
    while (t--)
    {
        cin >> a >> b >> n >> m;
        if (a + b < m + n)
        {
            cout << "No" << endl;
        }
        else
        {
            if (m <= min(a, b))
            {
                cout << "Yes" << endl;
            }
            else
            {
                cout << "No" << endl;
            }

        }

    }
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) <= abs(n-m)) {
            if ((min(a, b) >= max(n, m)) || (a >= m && b >= n) ) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) > abs(n-m)) {
            if ((min(a, b) >= max(n, m)) || (a >= m && b >= n) ) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if ((a==0 && m >0) || (b==0 && n>0)) {
            cout << "No" << endl;
            continue;
        }
        cout << "No" << endl;
    }
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) < abs(n-m)) {
            if ((min(a, b) >= max(n, m)) || (a >= m && b >= n) ) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) > abs(n-m)) {
            if ((min(a, b) >= max(n, m)) || (a >= m && b >= n) ) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if ((a==0 && m >0) || (b==0 && n>0)) {
            cout << "No" << endl;
            continue;
        }
        cout << "Yes" << endl;
    }
    return 0;
}


#include <iostream>
using namespace std;
int main()
{
    long long int a, b, n, m;
    int t;
    cin >> t;
    while (t--)
    {
        cin >> a >> b >> n >> m;
        if (a + b < m + n)
        {
            cout << "No" << endl;
        }
        else
        {
            if (m <= min(a, b))
            {
                cout << "Yes" << endl;
            }
            else
            {
                cout << "No" << endl;
            }

        }

    }
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) > abs(n-m)) {
            if ((min(a, b) >= max(n, m)) || (a >= m && b >= n) ) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        if ((a==0 && m >0) || (b==0 && n>0)) {
            cout << "No" << endl;
            continue;
        }
        cout << "Yes" << endl;
    }
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
typedef long long int ll;
int main() {
    int t;
    cin >> t;
    while(t--) {
        ll a,b,n,m;
        cin >>a >> b >> n >> m;
        if (a + b < n + m) {
            cout << "No" << endl;
            continue;
        }
        if (abs(a-b) > abs(n-m)) {
            if (min(a, b) >= max(n, m)) {
                cout << "Yes" << endl;
                continue;
            }
            cout << "No" << endl;
            continue;
        }
        cout << "Yes" << endl;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef unsigned long long ull;

#define faster ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define debug(x) cout<<#x<<" = "<<(x)<< endl
#define nl "\n"
#define sp " "

ll t, v, c, n, m;

int main() {
	faster
	cin >> t;
	while(t--){
		cin >> v >> c >> n >> m;
		if(v > c){
			n -= v - c;
			v = c;
		}

		if(c > v){
			n -= c - v;
			c = v;
		}

		n = max(n, 0LL);
		v -= (n + 1) / 2 + (m + 1) / 2;
		cout << (v >= 0? "Yes" : "No") << nl;
	}
}


#include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef unsigned long long ull;

#define faster ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define debug(x) cout<<#x<<" = "<<(x)<< endl
#define nl "\n"
#define sp " "

ll t, v, c, n, m;

int main() {
	faster
	cin >> t;
	while(t--){
		cin >> v >> c >> n >> m;
		if(v > c){
			n -= min(v - c, n);
			v -= min(v - c, n);
		}

		if(c > v){
			n -= min(c - v, n);
			c -= min(c - v, n);
		}

		if(v == c){
			v -= (n + 1) / 2 + (m + 1) / 2;
		}else if(v > c){
			c -= m;
		}else{
			v -= m;
		}

		cout << (v >= 0 && c >= 0 ? "Yes" : "No") << nl;
	}
}


#include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef unsigned long long ull;

#define faster ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define debug(x) cout<<#x<<" = "<<(x)<< endl
#define nl "\n"
#define sp " "

ll t, v, c, n, m;

int main() {
	faster
	cin >> t;
	while(t--){
		cin >> v >> c >> n >> m;
		if(v > c){
			n -= v - c;
			v = c;
		}

		if(c > v){
			m -= c - v;
			c = v;
		}

		n = (max(n, 0LL) + 1) >> 1;
		m = (max(m, 0LL) + 1) >> 1;
		ll cnt = (v + c) >> 1;

		cout << (cnt >= n + m ? "Yes" : "No") << nl;
	}
}


#include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef unsigned long long ull;

#define faster ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define debug(x) cout<<#x<<" = "<<(x)<< endl
#define nl "\n"
#define sp " "

ll t, v, c, n, m;

int main() {
	faster
	cin >> t;
	while(t--){
		cin >> v >> c >> n >> m;
		if(v > c){
			n -= v - c;
			v = c;
		}

		if(c > v){
			n -= c - v;
			c = v;
		}

		n = max(n, 0LL);
		m = max(m, 0LL);
		if(n < m) swap(n,m);

		v += c;
		v -= n, n = 0;

		if(v >= m && v % 2 == 0){
			v -= m, m = 0;
		}

		if(v >= m && v % 2 == 1){
			v /= 2;
			v -= m, m = 0;
		}

		cout << (v >= 0 && (n + m) == 0 ? "Yes" : "No") << nl;
	}
}