#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll N,W;
ll w[100];
ll v[100];

ll dp[105][405];

int main(){
  cin>>N>>W;
  for(int i=0;i<N;i++){
    cin>>w[i]>>v[i];
  }

  int dw=w[0];
  dw--;
  
  for(int i=0;i<N;i++){
    w[i]-=dw;
  }

  fill(dp[0] ,dp[105],-(1LL<<50) );
  
  dp[0][0]=0;
  ll ans=0;
  
  for(ll i=0;i<N;i++){
    for(ll j=N;j>=1;j--){
      for(ll k=400;k>=0;k--){
        if(k-w[i]>=0){
          dp[j][k]=max(dp[j][k],dp[j-1][k-w[i]]+v[i]);
          if( k+dw*j <=W)ans=max(ans,dp[j][k]);
        }
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}
