#include<bits/stdc++.h>
#define pairs pair<int,int>
#define loop(i,a,n) for(int i=a;i<n;i++)
#define m_p make_pair
#define fi first
#define se second
#define pb push_back
#define ll long long
#define all(v) v.begin(),v.end()
using namespace std;
//vector<ll> siz;
/*ll indes(ll i,ll right){
    ll val=siz[i];
    ll left=0;
    ll ans=-1;
    while(left<=right){
        ll mid=(left+right)/2;
        if(2*siz[mid]<=val){
            ans=mid;
            left=mid+1;
        }
        else
        {
            right=mid-1;
        }
        
    }
    return ans; 
}*/
map<pairs,bool> mp;

void solve(){
ll n,k;
cin>>n>>k;
vector<ll> vec(n);
vector<pairs> range(n);
loop(i,0,n){
    cin>>vec[i];
}
range[0].fi=vec[0];
range[0].se=vec[0];
range[n-1].fi=vec[n-1];
range[n-1].se=vec[n-1];
for(ll i=1;i<n-1;i++){
  ll a=range[i-1].fi;
  ll b=range[i-1].se;
  ll c= b+k-1;
  ll d=a-(k-1);
  range[i].fi=max(d,vec[i]);
  range[i].se=min(c,vec[i]+(k-1));
}

loop(i,1,n){
  ll a=range[i-1].fi;
  ll b=range[i-1].se;
  ll c=range[i].fi;
  ll d=range[i].se;

  if(a-k>=d||b+k<=c){
      cout<<"NO";
      return;
  }
    
}
cout<<"YES";
return;
}
int main(){
    int test=1;
    cin>>test;
    while(test--){
        solve();
        cout<<endl;
    }
}