#include # define endl '\n' # define clr(x,a) memset(x,a,sizeof(x)) # define vi vector # define all(a) a.begin(), a.end() # define deb(x) cout<<#x<<"=="<>t; while(t--) # define rev(s) reverse(s.begin(),s.end()) # define linija cout<<"___________\n"; # define sza(x) (int)x.size() using namespace std; typedef long long ll; const int mxN=1005, mxM=100005, LOG=18, koren=317, inf=1e8; const ll mod=4294967295; template T nzd(T a, T b){if(b==0) return a;else return nzd(b, a%b);} template T nzs(T a, T b){return(a*(b/nzd(a,b)));} template T stepenuj(T e, T n){T x=1,p=e;while(n){if(n&1)x=(x*p)&mod;p=(p*p)&mod;n>>=1;}return x;} template inline T na2(T x){return x*x;} ll maxi, mini, h, n, l[mxN], r[mxN], uk, pozh; int main(){ freopen("battle.in", "r", stdin); freopen("battle.out", "w", stdout); tc{ sc("%lld %lld", &n, &h); mini = maxi = 0; for(int i = 1; i <= n; i++){ sc("%lld %lld", &l[i], &r[i]); mini += l[i]; maxi += r[i]; } uk = maxi - mini + 1; // deb(uk); // deb(maxi); // deb(mini); if(h <= mini) cout << "YES\n"; else{ pozh = h - mini + 1; if(uk & 1){ if(pozh <= (uk+1)/2) cout << "YES\n"; else cout << "NO\n"; } else{ if(pozh <= uk/2) cout << "YES\n"; else cout << "NO\n"; } } } return 0; }