import Data.List

main = do
  li <- getLine
  let [n,h] = map read $ words li
  co <-getContents
  let abs = map (l2p . map read . words) $ lines co
  let ans = compute n h abs
  print ans

l2p :: [Int] -> (Int,Int)
l2p [a,b] = (a,b)

{-
切りつけるのはaiの最大値のものamaxだけでよい。
十分なダメージを与えたところで、amaxを超えるbiを全て投げる。
biだけで片がつく場合もある。
-}

compute :: Int -> Int -> [(Int,Int)] -> Int
compute n h abs
  | bsum >= h = length $ takeWhile (h >) $ scanl (+) 0 bs1
  | True = n1 + div (h-bsum+amax-1) amax
  where
    amax = maximum $ map fst abs
    bs1 = reverse $ sort $ filter (amax <) $ map snd abs
    bsum = sum bs1
    n1 = length bs1