#include using namespace std; int main() { int N, M; cin >> N >> M; vector A(N), B(N); vector vec(N); for (int i = 0; i < N; i++) { cin >> A[i] >> B[i]; vec[i] = (M - A[i]) / B[i] + 1; } sort(vec.begin(), vec.end()); auto check = [&](int m) -> bool { int day = 1; int cur = 0; while (cur < N) { for (int i = 0; i < m && cur + i < N; i++) { if (vec[cur + i] < day) { return false; } } cur += m; day++; } return true; }; int ok = N, ng = 0; while (abs(ok - ng) > 1) { int mid = (ok + ng) / 2; if (check(mid)) { ok = mid; } else { ng = mid; } } cout << ok << endl; }