#include<bits/stdc++.h>
using namespace std;
int m,n;
long long w[10001],c[10001];
long long dp[10001][10001];
int maxx(int x,int y)
{
if(x<y)return y;
else return x;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>w[i]>>c[i];
for(int i=1;i<=n;i++)
{
for(int v=m;v>0;v--)
{
if(w[i]<=v) dp[i][v]=max(dp[i-1][v],dp[i-1][v-w[i]]+c[i]);
else dp[i][v]=dp[i-1][v];
}
}
cout<<dp[n][m];
return 0;
}