include[HTML_REMOVED]
using namespace std;
const int M=1010;
int v[M],w[M];
int f[M];//j体积下前i个物体的最大价值
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i)cin>>v[i]>>w[i];
//f[0][0-m]=0 0件物品的时候价值是0 初始化可以省略 全局变量都是0
for(int i=1;i<=n;i)
{
for(int j=v[i];j<=m;j++)
{
f[j]=max(f[j],f[j-v[i]]+w[i]);
}
}
cout<<f[m]<<endl;
return 0;
}