import math

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

A = []

B = []

for i in range(N):

    a, b = list(map(int, input().split()))

    A.append(a)

    B.append(b)



amax = max(A)

# 最強の振り刀より強い攻撃力を持つものを抽出

B = list([x for x in B if x > amax])

B.sort(reverse=True)



ans = 0

while H > 0:

    # まだ投げれる

    if not B == []:

        H -= B[0]

        del B[0]

    # もう投げれない

    else:

        ans += math.ceil(H/amax)

        break

    ans += 1



print(ans)

import math

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

A = []

B = []

for i in range(N):

    a, b = list(map(int, input().split()))

    A.append(a)

    B.append(b)



amax = max(A)

# 最強の振り刀より強い攻撃力を持つものを抽出

B = list([x for x in B if x > amax])

B.sort()



ans = 0

while H > 0:

    # まだ投げれる

    if B:

        H -= B.pop()

    # もう投げれない

    else:

        ans += math.ceil(H/amax)

        break

    ans += 1



print(ans)

import math

N, H = list(map(int, input().split()))
A = []
B = []
for i in range(N):
    a, b = list(map(int, input().split()))
    A.append(a)
    B.append(b)
amax = max(A)
# 最強の振り刀より強い攻撃力を持つものを抽出
B = list([x for x in B if x > amax])
B.sort(reverse=True)
ans = 0
while H > 0:
    # まだ投げれる
    if not B == []:
        H -= B[0]
        del B[0]
    # もう投げれない
    else:
        ans += math.ceil(H / amax)
        break
    ans += 1
print(ans)

import math

N, H = list(map(int, input().split()))
A = []
B = []
for i in range(N):
    a, b = list(map(int, input().split()))
    A.append(a)
    B.append(b)
amax = max(A)
# 最強の振り刀より強い攻撃力を持つものを抽出
B = list([x for x in B if x > amax])
B.sort()
ans = 0
while H > 0:
    # まだ投げれる
    if B:
        H -= B.pop()
    # もう投げれない
    else:
        ans += math.ceil(H / amax)
        break
    ans += 1
print(ans)

-B.sort(reverse=True) +B.sort() -    if not B == []: -        H -= B[0] -        del B[0] +    if B: +        H -= B.pop()