import           Control.Monad
import qualified Data.ByteString.Char8 as BS
import           Data.Foldable
import           Data.Maybe
import qualified Data.Sequence         as Seq

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine

main = do
  [n, h] <- getIntList

  let parseInputs n ma bs | n == 0 = return (ma, bs)
                          | otherwise = do
                              [a, b] <- getIntList
                              parseInputs (n-1) (max ma a) (b:bs)

  (ma, bs) <- parseInputs n 0 []

  let bs' = Seq.unstableSortBy (flip compare) $ Seq.filter (> ma) $ Seq.fromList bs

      checkBs Seq.EmptyL    nb hp = (nb, hp)
      checkBs (b Seq.:< rs) nb hp | hp < 0 = (nb, hp)
                                  | otherwise = checkBs (Seq.viewl rs) (nb+1) (hp-b)

      (nb, hp) = checkBs (Seq.viewl bs') 0 h

      ans | hp <= 0 = nb
          | otherwise = nb + (hp + ma - 1) `div` ma

  print ans