output_description: Print the number of ways she can travel to the bottom-right cell, modulo
  10^9+7.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      H W A B
attempt: def read_input():
      h, w, a, b = map(int, input().split())
      return h, w, a, b
  
  
  # xの階乗 mod 10**9 + 7 について、1~nまでの結果を辞書にして返す
  def factorial_table(n):
      result = {0: 1}
  
      curr = 1
      acc = 1
      modmax = (10**9) + 7
      while curr <= n:
          acc *= curr
          acc %= modmax
          result[curr] = acc
          curr += 1
  
      return result
  
  
  # xの逆元 mod 10**9 + 7を求める
  def reverse_mod(x):
      return power_n(x, 10**9 + 5)
  
  
  # xのn乗 mod 10**9 + 7を求める
  def power_n(x, n):
      r = 1
      curr_a = x
      modmax = (10**9) + 7
      while n:
          if 1 & n:
              r *= curr_a
              r %= modmax
  
          n = n >> 1
          curr_a *= curr_a
          curr_a %= modmax
  
      return r
  
  
  def comb(x, y, factorial_dic):
      return (
          factorial_dic[x]
          * reverse_mod(factorial_dic[y])
          * reverse_mod(factorial_dic[x - y])
      )
  
  
  def path(s, e, factorial_dic, modmax):
      x = e[0] - s[0]
      y = e[1] - s[1]
  
      return comb(x + y, x, factorial_dic) % modmax
  
  
  def submit():
      h, w, a, b = read_input()
      f_dic = factorial_table(h + w - 2)
      count = 0
      modmax = 10**9 + 7
      for i in range(h - a):
          count += path((0, 0), (i, b - 1), f_dic, modmax) * path(
              (i, b), (h - 1, w - 1), f_dic, modmax
          )
          count %= modmax
  
      print(count)
  
  
  if __name__ == "__main__":
      submit()
  
problem_description: Statement
  
  We have a large square grid with H rows and W columns. Iroha is now standing
  in the top-left cell. She will repeat going right or down to the adjacent
  cell, until she reaches the bottom-right cell.
  
  However, she cannot enter the cells in the intersection of the bottom A rows
  and the leftmost B columns. (That is, there are A×B forbidden cells.) There is
  no restriction on entering the other cells.
  
  Find the number of ways she can travel to the bottom-right cell.
  
  Since this number can be extremely large, print the number modulo 10^9+7.
samples: [{"input": "2 3 1 1", "output": "2\n    \n\nWe have a 2\u00d73 grid, but entering the bottom-left cell is forbidden. The number\nof ways to travel is two: \"Right, Right, Down\" and \"Right, Down, Right\".\n\n* * *"}, {"input": "10 7 3 4", "output": "3570\n    \n\nThere are 12 forbidden cells.\n\n* * *"}, {"input": "100000 100000 99999 99999", "output": "1\n    \n\n* * *"}, {"input": "100000 100000 44444 55555", "output": "738162020"}]