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 d_iroha_and_a_grid(MOD=10**9 + 7):
      class Combination(object):
          """参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb"""
  
          __slots__ = ["mod", "factorial", "inverse"]
  
          def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
              fac, inv = [1], []
              fac_append, inv_append = fac.append, inv.append
  
              for i in range(1, max_n + 1):
                  fac_append(fac[-1] * i % mod)
  
              inv_append(pow(fac[-1], mod - 2, mod))
  
              for i in range(max_n, 0, -1):
                  inv_append(inv[-1] * i % mod)
  
              self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]
  
          def comb(self, n, r):
              if n < 0 or r < 0 or n < r:
                  return 0
              return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod
  
      H, W, A, B = [int(i) for i in input().split()]
      c = Combination(max_n=H + W)
      # 左上のマスの座標を(0,0)としたとき、B<=i<=W-1を満たすiについて、
      # (0,0)→(H-A-1,i)への行き方 * (H-A-1,i)→(H-A,i)への行き方(1通り) *
      # (H-A,i)→(H-1,W-1)への行き方 の値の総和を取る(10**9+7で剰余を取る)
      ans = sum(
          [
              c.comb(H - A - 1 + i, H - A - 1) * c.comb(A - 1 + W - 1 - i, A - 1)
              for i in range(B, W)
          ]
      )
      return ans % MOD
  
  
  print(d_iroha_and_a_grid())
  
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"}]