## https://yukicoder.me/problems/no/3422 def solve(ab, k, M): if k == 0: return False d = 0 for i in range(len(ab)): x = ab[i] d = i // k if x <= d: return False return True def main(): N, M = map(int, input().split()) ab = [] for _ in range(N): a, b = map(int, input().split()) ab.append((a, b)) ab2 = [] for a, b in ab: m = M - a x = m // b x += 1 ab2.append(x) ab2.sort() low = 0 high = M while high - low > 1: mid = (high + low) // 2 if solve(ab2, mid, M): high = mid else: low = mid if solve(ab2, low, M): print(low) else: print(high) if __name__ == "__main__": main()