#include<bits/stdc++.h>
#define ll long long
#define pp push_back
#define endl '\n'
#define all(x) x.begin(),x.end()
#define ld long double
#define PI acos(-1)
#define ones(x) __builtin_popcountll(x)
//#define int ll
using namespace std;
void Drakon() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#ifdef Clion
freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
#endif
}
unsigned long long inf = 1e10;
const double EPS = 1e-6;
const int MOD = 1000000007, N = 1e3 + 4, LOG = 25;
ll mul(const ll &a, const ll &b) {
return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
}
ll add(const ll &a, const ll &b) {
return (a + b + 2 * MOD) % MOD;
}
ll pw(ll x, ll y) {
ll ret = 1;
while (y > 0) {
if (y % 2 == 0) {
x = mul(x, x);
y = y / 2;
} else {
ret = mul(ret, x);
y = y - 1;
}
}
return ret;
}
int dp[N][N], w[N], p[N], n;
int slv(int i, int rem) {
if(i == n) return 0;
int &ret = dp[i][rem];
if(~ret)
return ret;
ret = slv(i + 1, rem);
if(w[i] <= rem)
ret = max(ret, slv(i + 1, rem - w[i]) + p[i] - w[i]);
return ret;
}
void solve() {
int k;
cin >> n >> k;
for (int i = 0; i < n; ++i) {
cin >> w[i] >> p[i];
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= k; ++j) {
dp[i][j] = -1;
}
}
cout << slv(0, k) << endl;
}
signed main() {
Drakon();
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcHAgcHVzaF9iYWNrCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBQSSBhY29zKC0xKQojZGVmaW5lIG9uZXMoeCkgX19idWlsdGluX3BvcGNvdW50bGwoeCkKLy8jZGVmaW5lIGludCBsbAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgRHJha29uKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CiNpZmRlZiBDbGlvbgogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbiksIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9Cgp1bnNpZ25lZCBsb25nIGxvbmcgaW5mID0gMWUxMDsKY29uc3QgZG91YmxlIEVQUyA9IDFlLTY7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3LCBOID0gMWUzICsgNCwgTE9HID0gMjU7CgpsbCBtdWwoY29uc3QgbGwgJmEsIGNvbnN0IGxsICZiKSB7CiAgICByZXR1cm4gKGEgJSBNT0QgKyBNT0QpICogKGIgJSBNT0QgKyBNT0QpICUgTU9EOwp9CgpsbCBhZGQoY29uc3QgbGwgJmEsIGNvbnN0IGxsICZiKSB7CiAgICByZXR1cm4gKGEgKyBiICsgMiAqIE1PRCkgJSBNT0Q7Cn0KCmxsIHB3KGxsIHgsIGxsIHkpIHsKICAgIGxsIHJldCA9IDE7CiAgICB3aGlsZSAoeSA+IDApIHsKICAgICAgICBpZiAoeSAlIDIgPT0gMCkgewogICAgICAgICAgICB4ID0gbXVsKHgsIHgpOwogICAgICAgICAgICB5ID0geSAvIDI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0ID0gbXVsKHJldCwgeCk7CiAgICAgICAgICAgIHkgPSB5IC0gMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CgppbnQgZHBbTl1bTl0sIHdbTl0sIHBbTl0sIG47CgppbnQgc2x2KGludCBpLCBpbnQgcmVtKSB7CiAgICBpZihpID09IG4pIHJldHVybiAwOwogICAgaW50ICZyZXQgPSBkcFtpXVtyZW1dOwogICAgaWYofnJldCkKICAgICAgICByZXR1cm4gcmV0OwogICAgcmV0ID0gc2x2KGkgKyAxLCByZW0pOwogICAgaWYod1tpXSA8PSByZW0pCiAgICAgICAgcmV0ID0gbWF4KHJldCwgc2x2KGkgKyAxLCByZW0gLSB3W2ldKSArIHBbaV0gLSB3W2ldKTsKICAgIHJldHVybiByZXQ7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgazsKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGNpbiA+PiB3W2ldID4+IHBbaV07CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IGs7ICsraikgewogICAgICAgICAgICBkcFtpXVtqXSA9IC0xOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgc2x2KDAsIGspIDw8IGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgRHJha29uKCk7CiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9