#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int v[N]; //体积
int w[N]; //价值
int f[N][N]; //dp[i][j]表示将 前i件物品 装进 限重为j 的背包可以获得的最大价值
int main()
{
int n,m;
cin >> n >> m;
for(int i = 1;i <= n;i++) cin >> v[i] >> w[i];
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++)
{
if(j < v[i]) f[i][j] = f[i-1][j]; //只能不选
else f[i][j] = max(f[i-1][j-v[i]] + w[i],f[i-1][j]); //从选和不选中找最大值
}
cout << f[n][m];
}