#include #include using namespace std; using ll = long long; #define overload4(a, b, c, d, name, ...) name #define rep1(n) for (ll i = 0; i < n; ++i) #define rep2(i, n) for (ll i = 0; i < n; ++i) #define rep3(i, a, b) for (ll i = a; i < b; ++i) #define rep4(i, a, b, c) for (ll i = a; i < b; i += c) #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) void solve(); int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(20); ll t = 1; // cin >> t; for (int i = 1; i <= t; i++) solve(); return 0; } ll dy[4] = {-1, 0, 1, 0}, dx[4] = {0, 1, 0, -1}; void solve() { ll n, m; cin >> n >> m; vector a(n), b(n); rep(i, n) cin >> a[i] >> b[i]; auto calc = [&](ll x) -> bool { vector c(n); rep(i, n) { ll rem = m - a[i]; c[min(n - 1, rem / b[i])]++; } ll val = 0; rep(i, n) { if (c[i] > x) { if (val < c[i] - x) return false; val -= c[i] - x; } else { val += x - c[i]; } } return true; }; ll ok = n, ng = 0; while (ok - ng > 1) { ll mid = (ok + ng) / 2; if (calc(mid)) ok = mid; else ng = mid; } cout << ok << endl; }