#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<pair<int,int> >a;
vector<int>v[4];
long n,W,cost;
int main()
{
	cin>>n>>W;
	for(int i=0;i<n;i++)
	{
		int a,b;cin>>a>>b;
		if(i==0)cost=a;
		v[a-cost].push_back(b);
	}
	for(int i=0;i<4;i++)sort(v[i].begin(),v[i].end(),greater<int>());
	a.push_back(make_pair(0,0));
	for(int i=0;i<4;i++)
	{
		int s=a.size();
		for(int j=0;j<s;j++)
		{
			pair<int,int>p=a[j];
			for(int k=0;k<v[i].size();k++)
			{
				p.second+=cost+i;
				p.first+=v[i][k];
				if(p.second>W)break;
				a.push_back(p);
			}
		}
	}
	sort(a.begin(),a.end());
	cout<<a[a.size()-1].first<<endl;
}