/*
*
*/
#include <bits/stdc++.h>
using namespace std;
#define el '\n'
const int mod = 1000000000 + 7, OO = 0x3f3f3f3f;
const int dx[] = {1, -1, 0, 0, 1, 1, -1, -1};
const int dy[] = {0, 0, 1, -1, 1, -1, 1, -1};
const char di[] = {'U', 'R', 'L', 'D'};
const int N = 1000 + 5, M = 1e5 + 5;
int n, m;
vector<int> w, v;
int64_t dp[N][M];
int clc(int i, int sum) {
if (sum > m) return -1e9;
if (i == n) return 0;
int64_t &ret = dp[i][sum];
if (~ret) return ret;
int64_t l = clc(i + 1, sum);
int64_t t =(v[i] + clc(i + 1, sum + w[i]));
ret = max(l, t);
return ret;
}
void solve() {
cin >> n >> m;
memset(dp, -1, sizeof dp);
for (int i = 0; i < n; ++i) {
int x;
cin >> x;
w.push_back(x);
cin >> x;
v.push_back(x);
}
cout << clc(0, 0) << el;
}
int32_t main() {
ios_base::sync_with_stdio(false);
cout.tie(nullptr), cin.tie(nullptr);
// if(fopen("in.txt", "r")){
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
// }
int tt = 1;
//cin >> tt;
while (tt--) {
solve();
}
return 0;
}
LyoKICoKICovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGVsICAgICAnXG4nCmNvbnN0IGludCBtb2QgPSAxMDAwMDAwMDAwICsgNywgT08gPSAweDNmM2YzZjNmOwpjb25zdCBpbnQgZHhbXSA9IHsxLCAtMSwgMCwgMCwgMSwgMSwgLTEsIC0xfTsKY29uc3QgaW50IGR5W10gPSB7MCwgMCwgMSwgLTEsIDEsIC0xLCAxLCAtMX07CmNvbnN0IGNoYXIgZGlbXSA9IHsnVScsICdSJywgJ0wnLCAnRCd9Owpjb25zdCBpbnQgTiA9IDEwMDAgKyA1LCBNID0gMWU1ICsgNTsKaW50IG4sIG07CnZlY3RvcjxpbnQ+IHcsIHY7CmludDY0X3QgZHBbTl1bTV07CgppbnQgY2xjKGludCBpLCBpbnQgc3VtKSB7CiAgICBpZiAoc3VtID4gbSkgcmV0dXJuIC0xZTk7CiAgICBpZiAoaSA9PSBuKSByZXR1cm4gMDsKCiAgICBpbnQ2NF90ICZyZXQgPSBkcFtpXVtzdW1dOwoKICAgIGlmICh+cmV0KSByZXR1cm4gcmV0OwoKICAgIGludDY0X3QgbCA9IGNsYyhpICsgMSwgc3VtKTsKICAgIGludDY0X3QgdCA9KHZbaV0gKyBjbGMoaSArIDEsIHN1bSArIHdbaV0pKTsKCiAgICByZXQgPSBtYXgobCwgdCk7CiAgICByZXR1cm4gcmV0Owp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIHcucHVzaF9iYWNrKHgpOwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIHYucHVzaF9iYWNrKHgpOwogICAgfQoKICAgIGNvdXQgPDwgY2xjKDAsIDApIDw8IGVsOwoKfQoKaW50MzJfdCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjb3V0LnRpZShudWxscHRyKSwgY2luLnRpZShudWxscHRyKTsKCiAgICAvLyBpZihmb3BlbigiaW4udHh0IiwgInIiKSl7CiAgICAvLyAgICAgZnJlb3BlbigiaW4udHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyAgICAgZnJlb3Blbigib3V0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8vIH0KCiAgICBpbnQgdHQgPSAxOwogICAgLy9jaW4gPj4gdHQ7CiAgICB3aGlsZSAodHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=