#include using namespace std; int main() { int N; long long W; cin >> N >> W; vector v(N), w(N); for (int i = 0; i < N; ++i) { cin >> v[i] >> w[i]; } long long ans = 0; long long bestv = 0, bestw = 1; long long maxw = 0; for (int i = 0; i < N; ++i) { if (W < w[i]) continue; if (bestv * w[i] < v[i] * bestw) { bestv = v[i]; bestw = w[i]; } if (maxw < w[i]) { maxw = w[i]; } } for (int i = 0; i < (1 << N); ++i) { long long curw = W; long long curans = 0; for (int j = 0; j < N; ++j) { if ((1 << j) & i) { curans += v[j]; curw -= w[j]; } } if (curw < 0) continue; curans += (curw / bestw) * bestv; if (curans > ans) ans = curans; } cout << ans << endl; }