import sys

# import re
import math
import collections
# import decimal
import bisect
import itertools
import fractions
# import functools
import copy
import heapq
import decimal
# import statistics
import queue

sys.setrecursionlimit(10000001)
INF = 10 ** 16
MOD = 10 ** 9 + 7

ni = lambda: int(sys.stdin.readline())
ns = lambda: map(int, sys.stdin.readline().split())
na = lambda: list(map(int, sys.stdin.readline().split()))


# ===CODE===


def main():
    n, h = ns()
    a = []
    b = []
    sum_b = 0
    for i in range(n):
        ai, bi = ns()
        sum_b += bi
        a.append((ai, i))
        b.append((bi, i))

    a = sorted(a, key=lambda x: x[0], reverse=True)
    b = sorted(b, key=lambda x: x[0], reverse=True)

    a_max = a[0][0]
    a_max_idx = a[0][1]
    cnt = (h - sum_b) // a_max
    h -= cnt * a_max

    while h > 0:
        cnt += 1
        if b[0][0] >= h:
            break
        else:
            if b[0][1] != a_max_idx and b[0][0] > a_max:
                h -= b[0][0]
                del b[0]
            elif len(b) > 1:
                if b[1][1] != a_max_idx and b[1][0] > a_max:
                    h -= b[1][0]
                    del b[1]
                else:
                    h -= a_max
            else:
                h -= a_max

    print(cnt)


if __name__ == '__main__':
    main()
