#include #include using namespace std; using namespace atcoder; using ll=long long; using ld=long double; ld pie=3.141592653589793; ll inf=1555505555; ll mod=1000000007; int main(){ ll n,l; cin >> n >> l; vectors(n),a(n); for (ll i = 0; i < n; i++) { cin >> s[i] >> a[i]; } vector>dp(n+1,vector(l+1,-1)); dp[0][0]=0; for (ll i = 0; i < n; i++) { for (ll j = 0; j <=l; j++) { if (dp[i][j]==-1) { continue; } dp[i+1][j]=max(dp[i+1][j],dp[i][j]); if (j+s[i]>l) { continue; } dp[i+1][j+s[i]]=max(dp[i+1][j+s[i]],dp[i][j]+a[i]); } } ll ans=0; for (ll i = 0; i <=l; i++) { ans=max(ans,dp[n][i]); } cout << ans << endl; }