/*
وَلَا تُخْزِنِي يَوْمَ يُبْعَثُونَ•يَوْمَ لَا يَنفَعُ مَالٌ وَلَا بَنُونَ•إِلَّا مَنْ أَتَى اللَّهَ بِقَلْبٍ سَلِيم❤
*/
#include <bits/stdc++.h>
#define ll long long
#define el endl
using namespace std;
void saf_sofa()
{
if (fopen("in.txt", "r"))
{
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { -1, 1, 0, 0, -1, 1, 1, -1 };
const int N = 105, mod = 1e9 + 7;
int dp[N][100001], w[100001], val[N];
int n, W;
int DP(int i, int x)
{
if (x > W)
return -1e9;
if (i == n)
return 0;
if (~dp[i][x])
return dp[i][x];
int ch1 = DP(i + 1, x);
int ch2 = DP(i + 1, x + w[i]) + val[i];
return dp[i][x] = max(ch1, ch2);
}
void solve()
{
}
int main()
{
saf_sofa();
int t_ = 1;
// cin >> t_;
while (t_--)
{
cin >> n >> W;
for (int i = 0; i < n; i++)
{
cin >> w[i] >> val[i];
}
memset(dp, -1, sizeof dp);
// solve();
cout << DP(0, 0);
}
}
/*
وَليتَ الذي بَيني وبينَك عامِرٌ وبَيني وبَينَ العَـٰالمينَ خرَابُ
*/
LyoK2YjZjtmE2Y7YpyDYqtmP2K7Zktiy2ZDZhtmQ2Yog2YrZjtmI2ZLZhdmOINmK2Y/YqNmS2LnZjtir2Y/ZiNmG2Y7igKLZitmO2YjZktmF2Y4g2YTZjtinINmK2Y7ZhtmB2Y7YudmPINmF2Y7Yp9mE2Ywg2YjZjtmE2Y7YpyDYqNmO2YbZj9mI2YbZjuKAotil2ZDZhNmR2Y7YpyDZhdmO2YbZkiDYo9mO2KrZjtmJINin2YTZhNmR2Y7Zh9mOINio2ZDZgtmO2YTZktio2Y0g2LPZjtmE2ZDZitmF4p2kCiovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGVuZGwKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdm9pZCBzYWZfc29mYSgpCnsKICAgIGlmIChmb3BlbigiaW4udHh0IiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKCJpbi50eHQiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJvdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwp9CmludCBkeFtdID0geyAwLCAwLCAxLCAtMSwgMSwgMSwgLTEsIC0xIH07CmludCBkeVtdID0geyAtMSwgMSwgMCwgMCwgLTEsIDEsIDEsIC0xIH07CmNvbnN0IGludCBOID0gMTA1LCBtb2QgPSAxZTkgKyA3OwppbnQgZHBbTl1bMTAwMDAxXSwgd1sxMDAwMDFdLCB2YWxbTl07CmludCBuLCBXOwppbnQgRFAoaW50IGksIGludCB4KQp7CglpZiAoeCA+IFcpCgkJcmV0dXJuIC0xZTk7CglpZiAoaSA9PSBuKQoJCXJldHVybiAwOwoJaWYgKH5kcFtpXVt4XSkKCQlyZXR1cm4gZHBbaV1beF07CglpbnQgY2gxID0gRFAoaSArIDEsIHgpOwoJaW50IGNoMiA9IERQKGkgKyAxLCB4ICsgd1tpXSkgKyB2YWxbaV07CglyZXR1cm4gZHBbaV1beF0gPSBtYXgoY2gxLCBjaDIpOwp9CnZvaWQgc29sdmUoKQp7Cn0KaW50IG1haW4oKQp7CglzYWZfc29mYSgpOwoJaW50IHRfID0gMTsKCS8vIGNpbiA+PiB0XzsKCXdoaWxlICh0Xy0tKQoJewoKCQljaW4gPj4gbiA+PiBXOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXsKCQkJY2luID4+IHdbaV0gPj4gdmFsW2ldOwoJCX0KCgkJbWVtc2V0KGRwLCAtMSwgc2l6ZW9mIGRwKTsKCQkvLyBzb2x2ZSgpOwoJCWNvdXQgPDwgRFAoMCwgMCk7Cgl9Cn0KLyoKCtmI2Y7ZhNmK2KrZjiDYp9mE2LDZiiDYqNmO2YrZhtmKINmI2KjZitmG2Y7ZgyDYudin2YXZkNix2Ywg2YjYqNmO2YrZhtmKINmI2KjZjtmK2YbZjiDYp9mE2LnZjtmA2bDYp9mE2YXZitmG2Y4g2K7YsdmO2KfYqNmPCgoqLw==