output_description: Print the minimum total number of attacks required to vanish the monster.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N H
      a_1 b_1
      :
      a_N b_N
attempt: # -*- coding: utf-8 -*-
  import sys
  import math
  import os
  import itertools
  import string
  import heapq
  import _collections
  from collections import Counter
  from collections import defaultdict
  from functools import lru_cache
  import bisect
  
  
  class Scanner:
      @staticmethod
      def int():
          return int(sys.stdin.readline().rstrip())
  
      @staticmethod
      def string():
          return sys.stdin.readline().rstrip()
  
      @staticmethod
      def map_int():
          return [int(x) for x in Scanner.string().split()]
  
      @staticmethod
      def string_list(n):
          return [input() for i in range(n)]
  
      @staticmethod
      def int_list_list(n):
          return [Scanner.map_int() for i in range(n)]
  
      @staticmethod
      def int_cols_list(n):
          return [int(input()) for i in range(n)]
  
  
  class Math:
      @staticmethod
      def gcd(a, b):
          if b == 0:
              return a
          return Math.gcd(b, a % b)
  
      @staticmethod
      def lcm(a, b):
          return (a * b) // Math.gcd(a, b)
  
      @staticmethod
      def roundUp(a, b):
          return -(-a // b)
  
      @staticmethod
      def toUpperMultiple(a, x):
          return Math.roundUp(a, x) * x
  
      @staticmethod
      def toLowerMultiple(a, x):
          return (a // x) * x
  
      @staticmethod
      def nearPow2(n):
          if n <= 0:
              return 0
          if n & (n - 1) == 0:
              return n
          ret = 1
          while n > 0:
              ret <<= 1
              n >>= 1
          return ret
  
      @staticmethod
      def sign(n):
          if n == 0:
              return 0
          if n < 0:
              return -1
          return 1
  
      @staticmethod
      def isPrime(n):
          if n < 2:
              return False
          if n == 2:
              return True
          if n % 2 == 0:
              return False
          d = int(n**0.5) + 1
          for i in range(3, d + 1, 2):
              if n % i == 0:
                  return False
          return True
  
  
  MOD = int(1e09) + 7
  INF = int(1e15)
  
  
  def main():
      # sys.stdin = open("sample.txt")
      N, H = Scanner.map_int()
      A = [0] * N
      B = [0] * N
      for i in range(N):
          a, b = Scanner.map_int()
          A[i] = a
          B[i] = b
      A.sort(reverse=True)
      B.sort(reverse=True)
      ans = 0
      for i in range(N):
          if B[i] > A[0]:
              ans += 1
              H -= B[i]
              if H <= 0:
                  break
          else:
              break
      H = max(0, H)
      ans += Math.roundUp(H, A[0])
      print(ans)
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  You are going out for a walk, when you suddenly encounter a monster.
  Fortunately, you have N katana (swords), Katana 1, Katana 2, …, Katana N, and
  can perform the following two kinds of attacks in any order:
  
    * Wield one of the katana you have. When you wield Katana i (1 ≤ i ≤ N), the monster receives a_i points of damage. The same katana can be wielded any number of times.
    * Throw one of the katana you have. When you throw Katana i (1 ≤ i ≤ N) at the monster, it receives b_i points of damage, and you lose the katana. That is, you can no longer wield or throw that katana.
  
  The monster will vanish when the total damage it has received is H points or
  more. At least how many attacks do you need in order to vanish it in total?
samples: [{"input": "1 10\n    3 5", "output": "3\n    \n\nYou have one katana. Wielding it deals 3 points of damage, and throwing it\ndeals 5 points of damage. By wielding it twice and then throwing it, you will\ndeal 3 + 3 + 5 = 11 points of damage in a total of three attacks, vanishing\nthe monster.\n\n* * *"}, {"input": "2 10\n    3 5\n    2 6", "output": "2\n    \n\nIn addition to the katana above, you also have another katana. Wielding it\ndeals 2 points of damage, and throwing it deals 6 points of damage. By\nthrowing both katana, you will deal 5 + 6 = 11 points of damage in two\nattacks, vanishing the monster.\n\n* * *"}, {"input": "4 1000000000\n    1 1\n    1 10000000\n    1 30000000\n    1 99999999", "output": "860000004\n    \n\n* * *"}, {"input": "5 500\n    35 44\n    28 83\n    46 62\n    31 79\n    40 43", "output": "9"}]