#include #include using namespace std; struct Ramen { int s, a; }; int main() { int N, I; cin >> N >> I; Ramen r[N]; vector> dp(1006, vector(1006, -1)); for(int i = 0; i < N; i++) { cin >> r[i].s >> r[i].a; } dp[0][0] = 0; for(int i = 0; i < N; i++) { for(int j = 0; j <= I; j++) { if(dp[i][j] == -1) continue; dp[i + 1][r[i].s + j] = max(dp[i + 1][r[i].s + j], dp[i][j] + r[i].a); dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]); } } cout << dp[N][I] << endl; }