#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair pii; typedef pair pll; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "< P; #define sz 19 int n; ll W; ll v[5252], w[5252]; ll dp[1<0){ tmp /= 2; Wbit++; } } int sh = max(0, Wbit - sz); int admsk = (1<> sh; } W = W >> sh; REP(i,n){ int ww = w[i]; ll vv = v[i]; FORR(j,0,W-ww+1){ CHMAX(dp[j+ww], dp[j]+vv); } } ll ans = 0; REP(i,W+1)CHMAX(ans,dp[i]); printf("%lld\n", ans); return 0; }