#include <bits/stdc++.h>
using namespace std;
const int GMAX = 10000;
const int INF = 1e9;
int maxProfit[GMAX + 1];
int main() {
ifstream fin( "rucsac.in" );
ofstream fout( "rucsac.out" );
int n, m, ans = 0;
fin >> n >> m;
for ( int i = 1; i <= m; i ++ ) maxProfit[i] = -INF;
for ( int i = 0, w, p; i < n; i ++ ) {
fin >> w >> p;
for ( int j = m; j >= w; j -- ) {
maxProfit[j] = max( maxProfit[j], maxProfit[j - w] + p );
}
}
for ( int i = 0; i <= m; i ++ ) {
ans = max( ans, maxProfit[i] );
}
fout << ans << '\n';
return 0;
}