#include<stdio.h>
#define N 1010
int Max(int m,int n)
{
if(m>=n)
{
return m;
}
return n;
}
int main()
{
int n,m; /*物品总数量,背包总体积*/
int f[N]; /*f[j]表示总体积是j的情况下,总价值最大是多少,*/
int v,w; /*物品的体积,价值*/
int i,j;
scanf("%d %d",&n,&m);
f[0]=0;
for(i=1;i<=m;i++)
{
f[i]=-1;
}
for(i=1;i<=n;i++)
{
scanf("%d %d",&v,&w);
for(j=v;j<=m;j++)
{
f[j]=Max(f[j],f[j-v]+w);
}
}
printf("\n%d",f[m]);
return 0;
}