#include #include using namespace std; using namespace atcoder; using ll=long long; using ld=long double; ld pie=3.141592653589793; ll inf=1444999994; ll mod=1000000007; int main(){ ll n,m; cin >> n >> m; vector>p(n); for (ll i = 0; i < n; i++) { cin >> p[i].first >> p[i].second; } sort(p.begin(),p.end()); reverse(p.begin(),p.end()); vectorv(n),w(n); for (ll i = 0; i < n; i++) { v[i]=p[i].first; w[i]=p[i].second; } vectordp(m+1,-1); dp[0]=0; ll ans=0; for (ll i = 0; i < n; i++) { for (ll j = m; j >=0; j--) { if (dp[j]==-1) { continue; } if (j+w[i]<=m) { if (dp[j+w[i]]