#include<bits/stdc++.h>
using namespace std;
const int MAXX = 1e5 + 5;
int n, v, a[MAXX], b[MAXX], dp[MAXX];
int main(){
cin >> n >> v;
for(int i = 1; i <= n; i++){
cin >> a[i] >> b[i];
}
for(int i = 1; i <= n; i++){
for(int j = v; j >= a[i]; j--){
dp[j] = max(dp[j - a[i]] + b[i], dp[j]);
}
}
cout << dp[v];
return 0;
}
01背包问题