import numpy as np
import pdb

'''
Answer is "permutation invariant".
'''

def main():
    [N,HP] = map(int,raw_input().split(' '))
    As = np.zeros(N).astype(int)
    Bs = np.zeros(N).astype(int)
    for k in range(N):
        [a,b] = map(int,raw_input().split(' '))
        As[k] = a
        Bs[k] = b

    answer = shortestkill(As,Bs,HP)
    print answer


def shortestkill(As, Bs, HP):
    weaponlist = np.ones(len(Bs))
    maxattack = np.max(As)
    maxthrow = np.max(Bs)

    throworder = np.argsort(Bs)
    orderB = Bs[throworder]
    orderA = As[throworder]
    bestattacksword = np.where(orderA == maxattack)[0][0]
    worththrowing = list(np.where(orderB >= maxattack)[0])

    totaldamage = 0
    idxround = 0
    worththrowing.remove(bestattacksword)
    bestswordisused = False
    while(HP > 0):
        if len(worththrowing) > 0:
            HP -= orderB[worththrowing[0]]
            idxround += 1
            totaldamage  += orderB[worththrowing[0]]
            worththrowing.remove(worththrowing[0])
        elif bestswordisused is False:
            HP -= orderB[bestattacksword]
            totaldamage +=  orderB[bestattacksword]
            idxround +=1
            bestswordisused = True
        else:
            lastattacks = int(np.ceil(float(HP)/float(maxattack)))
            idxround += lastattacks
            HP -= lastattacks * maxattack
            totaldamage +=  lastattacks * maxattack

    return idxround







if __name__ == '__main__':
    main()
