import math

N, H = map(int, input().split())

a = [0 for j in range(N)]
b = [0 for j in range(N)]

for i in range(N):
    a[i], b[i] = map(int, input().split())

HP = H
count = 0
a_max = max(a)
a_max_index = a.index(max(a))
b_sorted = sorted(b, reverse=True)
b_max = b[a_max_index]

a_max_index_list = [i for i, x in enumerate(a) if x == max(a)]

for i in a_max_index_list:
    if b_max > b[i]:
        b_max = b[i]

for i in reversed(range(N)):
    if b_sorted[i] <= a_max:
        b_sorted.remove(b_sorted[i])

subsum = 0
flag = 0
printflag = 0

if sum(b_sorted) >= H:
    for i in range(len(b_sorted)):
        HP -= b_sorted[i]
        count += 1
        if HP < 0:
            print(count)
            printflag = 1
            break
else:
    for i in range(len(b_sorted)):
        if HP < 0:
            print(count)
            printflag = 1
            break
        else:
            if b_sorted[i] > b_max:
                HP -= b_sorted[i]
                count += 1
            elif b_sorted[i] == b_max and flag == 0:
                flag = 1
            else:
                HP -= b_sorted[i]
                count += 1

if printflag == 0:
    if HP <= b_max:
        print(count+1)
    else:
        print(count + math.ceil((HP - b_max)/a_max) + 1)