#include<bits/stdc++.h>
using namespace std;
#define INF 1e10+7
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n, w;
cin >> n >> w;
vector<pair<int, int>>v(n + 1);
int minn = INF;
for (int i = 1; i <= n; i++) {
int a, b;
cin >> a >> b;
v[i] = make_pair(a, b);
minn = min(minn, a);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
v[i].first -= minn-1;
cnt += v[i].first;
}
vector<vector<vector<int>>>dp(n + 1, vector<vector<int>>(cnt + 1, vector<int>(n + 1)));
for (int i = 1; i <= n; i++) {
for (int j = cnt; j >= v[i].first; j--) {
for (int k =i; k >= 1; k--) {
dp[i][j][k] = dp[i - 1][j][k];
if (k*(minn - 1) + j <= w){
dp[i][j][k] = max(dp[i][j][k], dp[i-1][j - v[i].first][k - 1] + v[i].second);
}
}
}
}
int ans = 0;
for (int i = 1; i <= cnt; i++) {
for (int j = 1; j <= n; j++) {
ans = max(ans, dp[n][i][j]);
}
}
cout << ans << endl;
return 0;
}