```
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 500005;
typedef pair<ll, ll> PII;

ll n, m;
struct Node {
ll a, b, v;
bool operator< (const Node &q) {
if (v > 0 && q.v > 0)
return a < q.a;
else if (v < 0 && q.v < 0)
return b > q.b;
else return v > q.v;
}
}t[N];
void solve() {
cin >> n >> m;
for (int i = 1; i <= n ;i ++) {
cin >> t[i].a >> t[i].b;
t[i].v = t[i].b - t[i].a;
}
sort(t + 1, t + 1 + n);
ll ans = m;
int i = 1;
for (i = 1; i <= n ;i ++) {
if (t[i].a > ans) {
break;
}
ans += t[i].v;
}
if (i > n) puts("Yes");
else puts("No");
}
int main () {
int t;
cin >> t;
while (t --) {
solve();}
return 0;
}

分类讨论 对收益的大小进行讨论 对于收益正的,首先撞丧失稳定值小的,尽量靠后 对于收益负的,首先撞反馈大的,让收益靠后 否则先撞正的再撞负的尽量靠后