#include <bits/stdc++.h>
using namespace std;

int opt(int i, int j, int w[], int v[]) {
if(j==-1||i==-1)
    return 0;
else if(j>=w[i])
    return max(opt(i-1, j, w, v), opt(i-1,j-w[i], w, v)+v[i]);
else
    return opt(i-1, j, w, v);
}

int main() {
int n, m, i;
scanf("%d %d", &n, &m);
int w[n], v[n];
for(i=0;i<n;i++)
    scanf("%d %d", &w[i], &v[i]);
printf("%d", opt(n-1, m, w, v));
}
