import Control.Applicative ((<$>))
import Control.Arrow ((***))
import Control.Monad
import Data.List

main :: IO ()
main = do
  [n,h] <- map read . words <$> getLine
  (a,bs) <- fmap (maximum *** sortBy (flip compare)) $ fmap unzip $ replicateM n $ do
    [a,b] <- map read . words <$> getLine
    return (a,b)
  let bs' = takeWhile (>a) bs
      (ans,rest) = foldl' (\(aans,arest) b -> if arest == 0 then (aans,arest) else (aans+1,arest-b)) (0,h) bs'
      ans' = if rest > 0 then ans + ceiling (fromIntegral rest / fromIntegral a) else ans

  print ans'