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: import math
  
  
  # Function to find modulo inverse of b. It returns
  # -1 when inverse doesn't
  # modInverse works for prime m
  def modInverse(b, m):
      g = math.gcd(b, m)
      if g != 1:
          # print("Inverse doesn't exist")
          return -1
      else:
          # If b and m are relatively prime,
          # then modulo inverse is b^(m-2) mode m
          return pow(b, m - 2, m)
  
  
  # Function to compute a/b under modulo m
  def modDivide(a, b, m):
      a = a % m
      inv = modInverse(b, m)
      if inv == -1:
          print("Division not defined")
      else:
          return (inv * a) % m
  
  
  MOD = (10**9) + 7
  H, W, A, B = list(map(int, input().split(" ")))
  
  DP = []
  j = 1
  for i in range(1, 200002):
      j *= i
      j %= MOD
      DP.append(j)
  
  
  # print(DP)
  def factorial(i):
      if i == 0:
          return 1
      global DP
      # print(i)
      # print(i, DP[i-1])
      # print(DP[i-1])
      return DP[i - 1]
  
  
  def move2(H, W, A, B):
      numPaths = 0
      h = H - A
      w = W - (W - B) + 1
      a = A + 1
      pttp = 0
      for b in range(w, W + 1):
          # print(h, b, a, W-b+1)
          ttp = (
              factorial(h + b - 2)
              * modInverse((factorial(h - 1) * factorial(b - 1)) % MOD, MOD)
          ) % MOD
          tpttp = ttp
          ttp -= pttp
          pttp = tpttp
          btp = (
              factorial(a + (W - b + 1) - 2)
              * modInverse((factorial(a - 1) * factorial(W - b)) % MOD, MOD)
          ) % MOD
          # btp = factorial(a+(W-b+1)-2)//(factorial(a-1)*factorial(W-b))
          numPaths += ttp * btp
      return numPaths
  
  
  ways = move2(H, W, A, B)
  print(ways % (10**9 + 7))
  
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"}]