#include using namespace std; using ll = long long; ll N, W; ll v[20],w[20]; ll solve(ll R, ll S) { vectordp(R+1); dp[0]=S; for(int i = 0; i < N; i++) { for(int j = 0; j <= R-w[i]; j++) { dp[j+w[i]]=max(dp[j+w[i]], dp[j]+v[i]); } } ll ret=0; for(int i = 0; i <= R; i++) ret=max(ret,dp[i]); return ret; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); cin >> N >> W; for(int i = 0; i < N; i++) cin >> v[i] >> w[i]; ll ans = 0; for(int i = 0; i < N; i++) { ll p = W-W/w[i]*w[i]; ll q = W/w[i]*v[i]; cerr << "???" << p << " " << q << "\n"; ans=max(ans,solve(p,q)); } cout << ans << "\n"; }