import math

def main():
    N, H = map(int, input().split())

    cuts = []
    throws = []
    for i in range(N):
        tmp = [int(j) for j in input().split()]
        cuts.append(tmp[0])
        throws.append(tmp[1])

    # 切るだけでおｋ
    if max(cuts) >= max(throws):
        print(math.ceil(H / max(cuts)))
        return

    # 投げ攻撃より切りでもっと強い剣がある
    if max(cuts) > min(throws):
        # 投げる剣の合計ダメージを計算
        sum_throw = 0
        n_throw = 0
        throws.sort(reverse=True)
        for throw in throws:
            if throw > max(cuts):
                sum_throw += throw
                n_throw += 1
            else:
                break

        # 必要な切る回数を計算
        n_cut = math.ceil((H - sum_throw) / max(cuts))
        print(n_cut + n_throw)
        return

    # 切りがよわい
    n_throw = N

    n_cut = math.ceil((H - sum(throws)) / max(cuts))
    print(n_throw + n_cut)
    return


main()
