code:```cpp
#include
#include
using namespace std;
int w[401];
int d[401];
int dp[3403][401];
int main()
{
int N,W;
cin>>N>>W;
for(int i=1;i<=N;i++)
{
cin>>w[i]>>d[i];
}
dp[1][W]=0;
for(int i=1;i<=N;i++)
{
if(w[i]>W)
{
continue;
}
for(int j=1;j<=W;j++)
{
if(j<w[i])
{
dp[i][j]=dp[i-1][j];
}
else{
dp[i][j]=max(dp[i-1][j],d[i]+dp[i-1][j-w[i]]);
}
}
}
cout<<dp[N][W]<<endl;
}