{-# OPTION_GHC -O2 #-}

import Data.List (transpose, sort)

main = do

    [n, h] <- take 2 . map read . words <$> getLine
    sords <- sequence $ replicate n (map read . words <$> getLine) :: IO [[Int]]

    let [atks, thrs] = transpose sords
        maxDps = maximum atks
        needThrowSords = reverse . sort . filter (maxDps <) $ thrs
        attackCount
            | h <= sum needThrowSords = (+1). length . takeWhile (h >) . scanl1 (+) $ needThrowSords
            | otherwise               = 1 + length needThrowSords + (h - 1 - sum needThrowSords) `div` maxDps
        in
            print attackCount