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])

    max_cut = max(cuts)

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

    # 投げ攻撃より切りでもっと強い剣がある
    if max_cut > min(throws):
        throws_new = list(filter((lambda x: x > max_cut), throws))
        n_throw = len(throws_new)

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

    # 切りがよわい
    n_throw = N
    n_cut = math.ceil((H - sum(throws)) / max_cut)
    print(n_throw + n_cut)
    return


main()
