N, H = [int(_) for _ in input().split()]
katana = [[int(_) for _ in input().split()] for _ in range(N)]

katana.sort(key=lambda x:x[1], reverse=True)
a_max_katana = max(katana)

a_max = a_max_katana[0]
a_max_b = a_max_katana[1]
a_max_index = katana.index(a_max_katana)
katana.pop(a_max_index)

count = 0
j = 0

while H > a_max_b:
    katana_use = katana[j]
    if katana_use[1] < a_max or j == N - 2:
        count += max(0, (H - a_max_b) // a_max + bool((H - a_max_b) % a_max)) + 1
        break
    else:
        H -= katana_use[1]
        count += 1
        j += 1
else:
    count += 1

print(count)