n, h = list(map(int, input().split()))

l = [list(map(int, input().split())) for _ in range(n)]



max_a = max(l, key=lambda x: x[0])[0]

l = [[a, b] for a, b in l if b > max_a]

l.sort(key=lambda x: x[1], reverse=True)



c = 0

for a, b in l:

  h -= b

  c += 1

  if h <= 0:

    print(c)

    exit()



print((c + h // max_a + (h % max_a != 0)))
n, h = list(map(int, input().split()))

l = [list(map(int, input().split())) for _ in range(n)]

A, B = list(zip(*l))

max_a = max(A)

c = 0

for b in sorted([b for b in B if b > max_a], reverse=True):

  h -= b

  c += 1

  if h <= 0:

    print(c)

    exit()

print((c + h // max_a + (h % max_a != 0)))
n, h = list(map(int, input().split()))
l = [list(map(int, input().split())) for _ in range(n)]
max_a = max(l, key=lambda x: x[0])[0]
l = [[a, b] for a, b in l if b > max_a]
l.sort(key=lambda x: x[1], reverse=True)
c = 0
for a, b in l:
    h -= b
    c += 1
    if h <= 0:
        print(c)
        exit()
print((c + h // max_a + (h % max_a != 0)))

n, h = list(map(int, input().split()))
l = [list(map(int, input().split())) for _ in range(n)]
A, B = list(zip(*l))
max_a = max(A)
c = 0
for b in sorted([b for b in B if b > max_a], reverse=True):
    h -= b
    c += 1
    if h <= 0:
        print(c)
        exit()
print((c + h // max_a + (h % max_a != 0)))

-max_a = max(l, key=lambda x: x[0])[0] -l = [[a, b] for a, b in l if b > max_a] -l.sort(key=lambda x: x[1], reverse=True) +A, B = list(zip(*l)) +max_a = max(A) -for a, b in l: +for b in sorted([b for b in B if b > max_a], reverse=True):