#include #include #include using namespace std; int dp[100000]; int n; vectorw1; vectorv1; int rec(int weight1){ if(weight1==0){ return 0; } if(dp[weight1]!=-1){ return(dp[weight1]); } int result=0; for(int j=0; j=0){ result=max(result, rec(weight1-w1[j])+v1[j]); } } dp[weight1]=result; return result; } int main() { int w; cin>>n>>w; for(int i=0; i>a>>b; w1.push_back(a); v1.push_back(b); } for(int i=0; i<100000; i++){ dp[i]=-1; } cout<