        #include <bits/stdc++.h>
        using namespace std;
   #define int long long
const int MAX = 510000;
const int MOD =  998244353;

     signed main(){
        int n,w,a,b;
        cin>>n>>w;
        map<int,int> mp,mp2;
        mp[0]=0;mp2[0]=0;
   for(int i=0;i<n;i++){
      cin>>a>>b;
   for(auto it=mp.begin();it!=mp.end();it++){
      mp2[it->first]=max(mp2[it->first],it->second);
      if(it->first + a<=w)mp2[it->first +a]=max(mp2[it->first +a],it->second +b);
     
   }
   mp.clear();
   swap(mp,mp2);
   }
   int ans=0;
     for(auto it=mp.begin();it!=mp.end();it++)ans=max(ans,it->second);
     cout<<ans<<endl;


      }

        
