#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <queue>
#define LL long long
#define pb push_back
#define lm 5001
#define MOD 1000000007
using namespace std;
int w[lm],v[lm];
int opt[10001];
int n,g,res=0;
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
scanf("%d %d",&n,&g);
for(int i=1; i<=n; i++)
{
scanf("%d %d",&w[i],&v[i]);
}
for(int i=1; i<=n; i++)
for(int j=g-w[i]; j>=0; j--)
{
if(opt[j+w[i]]<opt[j]+v[i]);
{
opt[j+w[i]]=opt[j]+v[i];
if(opt[j+w[i]]>res)
res=opt[j+w[i]];
}
}
printf("%d",res);
return 0;
}