import           Control.Monad
import           Data.List
import           Debug.Trace

main :: IO ()
main = do
    [n, h] <- getInts
    ab <- replicateM n $ do
        [a, b] <- getInts
        return (a, b)
    let as = map fst ab
        bs = map snd ab
    print $ solve h as bs

getInts :: IO [Int]
getInts = map read . words <$> getLine

solve :: Int -> [Int] -> [Int] -> Int
solve h as = go 0 0 . sortBy (flip compare) . filter (> maxA)
  where
    maxA = maximum as
    go n x [] = (h - x + maxA - 1) `div` maxA + n
    go n x (y:ys)
        | y + x >= h = n + 1
        | otherwise = go (n+1) (x + y) ys

