#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX = 110;
ll n,W,w[MAX], v[MAX];
ll dp[MAX][100010];
int main(){
cin >> n >> W;
for(ll i = 1; i <= n; i++) cin >> w[i] >> v[i];
for(ll i = 1; i<=n; i++){
for(ll j = 0; j<=W; j++){
if(j < w[i])
dp[i][j] = dp[i-1][j];
else
dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i]);
}
}
cout << dp[n][W] << endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTUFYID0gMTEwOwoKbGwgbixXLHdbTUFYXSwgdltNQVhdOwpsbCBkcFtNQVhdWzEwMDAxMF07CgppbnQgbWFpbigpewoKICAgIGNpbiA+PiBuID4+IFc7CiAgICBmb3IobGwgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gd1tpXSA+PiB2W2ldOwogICAgZm9yKGxsIGkgPSAxOyBpPD1uOyBpKyspewogICAgICAgIGZvcihsbCBqID0gMDsgajw9VzsgaisrKXsKICAgICAgICAgICAgaWYoaiA8IHdbaV0pCiAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2ktMV1bal07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gbWF4KGRwW2ktMV1bal0sIGRwW2ktMV1bai13W2ldXSArIHZbaV0pOwogICAgICAgIH0gICAKICAgIH0KCiAgICBjb3V0IDw8IGRwW25dW1ddIDw8IGVuZGw7Cn0=