#include<iostream>
using namespace std;
struct qwq{
short w;
short v;
}a[3500];
short f[3500][15000];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i].v>>a[i].w;
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=1;j--)
{
if(j-a[i].v>=0)
{
f[i][j]=max(f[i-1][j],(short)(f[i-1][j-a[i].v]+a[i].w));
}
}
}
cout<<f[n][m];
return 0;
}
谢谢