01背包
#include<stdio.h>
#include<string.h>
int dp[12881];
int w[3403],d[3403];
int main()
{
int n,m,i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d%d",&w[i],&d[i]);
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=0;i<n;i++)
{
for(j=m;j>=w[i];j--)
if(dp[j-w[i]]>0)
{
if(dp[j]<dp[j-w[i]]+d[i])
dp[j]=dp[j-w[i]]+d[i];
}
}
int max=0;
for(i=0;i<=m;i++)
if(max<dp[i])
max=dp[i];
printf("%d\n",max-1);
return 0;
}