import sys
## io
IS = lambda: sys.stdin.readline().rstrip()
II = lambda: int(IS())
MII = lambda: list(map(int, IS().split()))
MIIZ = lambda: list(map(lambda x: x-1, MII()))
## dp
INIT_VAL = 0
MD2 = lambda d1,d2: [[INIT_VAL]*d2 for _ in range(d1)]
MD3 = lambda d1,d2,d3: [MD2(d2,d3) for _ in range(d1)]
## math
DIVC = lambda x,y: -(-x//y)
DIVF = lambda x,y: x//y

def main():
    n, h = MII()
    attacks = [MII() for _ in range(n)]
    max_a = sorted(attacks)[-1][0]
    bb = [a[1] for a in attacks if a[1] > max_a]
    total_b = sum(bb)
    if total_b > h:
        cnt = 0
        for i, b in enumerate(bb):
            cnt += b
            if cnt > h:
                print(i+1)
                return None
    d = h - total_b
    cnt = DIVC(d, max_a)
    print(cnt + len(bb))

if __name__ == '__main__':
    main()