#include <stdio.h>
#define MAX_N 100
#define MAX_W 1000
int n;
int dp[MAX_N+1][MAX_W+1];
int weight[MAX_N+1];
int cost[MAX_N+1];
int CAP;
int func(int i,int w)
{
if(i==n+1) return 0;
if(dp[i][w]!=-1) return dp[i][w];
int profit1=0, profit2=0;
if(w+weight[i]<=CAP)
profit1=cost[i]+func(i+1,w+weight[i]);
profit2=func(i+1,w);
dp[i][w]= max(profit1,profit2);
return dp[i][w];
}
int max(int p1, int p2)
{
if(p1>p2) return p1;
else if(p1<=p2) return p2;
}
int main()
{
int i;
for(i=0;i<n;i++)
{
scanf("%d%d\n",&weight
[i
],&cost
[i
]); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWF9OIDEwMAojZGVmaW5lIE1BWF9XIDEwMDAKaW50IG47CmludCBkcFtNQVhfTisxXVtNQVhfVysxXTsKaW50IHdlaWdodFtNQVhfTisxXTsKaW50IGNvc3RbTUFYX04rMV07CmludCBDQVA7CmludCBmdW5jKGludCBpLGludCB3KQp7CiAgICBpZihpPT1uKzEpIHJldHVybiAwOwoJaWYoZHBbaV1bd10hPS0xKSByZXR1cm4gZHBbaV1bd107CglpbnQgcHJvZml0MT0wLCBwcm9maXQyPTA7CglpZih3K3dlaWdodFtpXTw9Q0FQKQoJCXByb2ZpdDE9Y29zdFtpXStmdW5jKGkrMSx3K3dlaWdodFtpXSk7Cglwcm9maXQyPWZ1bmMoaSsxLHcpOwoJZHBbaV1bd109IG1heChwcm9maXQxLHByb2ZpdDIpOwoJcmV0dXJuIGRwW2ldW3ddOwp9CmludCBtYXgoaW50IHAxLCBpbnQgcDIpCnsKICAgIGlmKHAxPnAyKSByZXR1cm4gcDE7CiAgICBlbHNlIGlmKHAxPD1wMikgcmV0dXJuIHAyOwp9CmludCBtYWluKCkKewogICAgaW50IGk7CgoJZnJlb3BlbigiaW4iLCJyIixzdGRpbik7CgltZW1zZXQoZHAsLTEsc2l6ZW9mKGRwKSk7CiAgICBzY2FuZigiJWQlZCIsJm4sJkNBUCk7Cglmb3IoaT0wO2k8bjtpKyspCgl7CgkJc2NhbmYoIiVkJWRcbiIsJndlaWdodFtpXSwmY29zdFtpXSk7Cgl9CglwcmludGYoIiVkXG4iLGZ1bmMoMSwwKSk7Cn0KCg==