#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 514514;
const int Mass = 11451;
int n;
long long M;
long long v[N];
long long m[N];
long long dp[Mass];
int main () {
freopen ("Mining.in", "r", stdin);
freopen ("Mining.out", "w", stdout);
scanf ("%d%lld", &n, &M);
for (int i = 1; i <= n; i++) {
scanf ("%lld%lld", &(v[i]), &(m[i]));
}
for (int i = 1; i <= n; i++) {
for (int j = M; j >= m[i]; j--) {
dp[j] = max (dp[j], dp[j - m[i]] + v[i]);
}
}
cout << dp[M] << endl;
return 0;
}