import Data.List
main = do
  [_,h] <- map read . words <$> getLine :: IO [Int]
  ks <- map (\[a,b] -> (a,b)) . map (map read . words) . lines <$> getContents :: IO [(Int,Int)] 
  let (swa,swb) = maximum $ map (\(a,b) -> (a,negate b)) ks
  let (rest,n) = throw (map snd $ filter (\(_,b) -> b >= swa) $ delete (swa,swb) ks) (h,0)
  print $ if rest <= 0 then n else n + ceiling ((fromIntegral rest) / (fromIntegral swa))
  
throw :: [Int] -> (Int,Int) -> (Int,Int)
throw [] (hp,n) = (hp,n)
throw [x] (hp,n) = (hp-x,n+1)
throw (x:xs) (hp,n) 
  | hp - x <= 0 = (hp-x,n+1)
  | otherwise = throw xs (hp-x,n+1)
