#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
#include <boost/multiprecision/cpp_int.hpp>

namespace mp = boost::multiprecision;

int digitsum(int n){
  int s=0;
  while(n>0){
    s+=n%10;
    n/=10;
  }
  return s;
}

bool is_prime(int n){
  if(n==1)return false;
  for(int i=2;i*i<=n;++i){
    if(n%i==0)return false;
  }
  return true;
}

vector<int> multi_input(int n){
  vector<int> a(n);
  for(int i=0;i<n;i++)cin>>a[i];
  return a;
}


int n;

int main(){
  cin>>n;
  for(int i=0;i<n;i++){
    mp::cpp_int a,b,c,d;
    cin>>a>>b>>c>>d;
    int flg=0;
    int con=1;
    if(a-b<0){
      con=0;
      flg=1;
    }
    if(d-b==0){
      if(a%b>c&&a%b<b){
        flg=1;
      }
      con=0;
    }
    vector<mp::cpp_int> list;
    mp::cpp_int t;
    while(con==1){
      a=a%b;
      for(auto f=list.begin();f!=list.end();f++){
        if((*f-a)%(d-b)==0){
          con=0;
        }
      }
      if(a+d<b||b>d){
        con=0;
        flg=1;
      }
      list.push_back(a);
      t=c+(d-b)-(c-a)%(d-b);
      if(t>c&&t<b||(a>c&&a<b)){
        con=0;
        flg=1;
      }
      a=t-b;
    }
    printf("%s\n",flg==1?"No":"Yes");
  }
}


