#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#define MAXN 3410
#define MAXM 12885
using namespace std;
int dp[MAXM];
int main()
{
int N,M;
int W[MAXN],D[MAXN];
while(cin>>N>>M){ //输入装饰数量 最大承重
for(int i=1;i<=N;i++){
cin>>W[i]>>D[i]; //重量 价值
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=N;i++){
for(int j=M;j>=0;j--){
if(j>=W[i]){
dp[j]=max(dp[j],dp[j-W[i]]+D[i]);
}
}
}
cout<<dp[M]<<endl;
}
return 0;
}