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: from collections import deque
  
  H, W, A, B = map(int, input().split())
  # H,W,A,B=2,3,1,1
  # H,W,A,B=10,7,3,4
  array = [[0 for i in range(W)] for j in range(H)]
  
  # 進めないところ塗りつぶし+1埋め
  for i in range(H):
      for j in range(W):
          if i == 0 or j == 0:
              array[i][j] = 1
          if H - A <= i and j < B:
              array[i][j] = -1
  # array[3][6]=5
  
  
  def search(k, m):
  
      # スタート地点
      if k == 0 and m == 0:
          pass
      # 縦0横Ｍ
      elif k == 0:
          array[k][m] = array[k][m - 1]
      # 縦K横0
      elif m == 0:
          array[k][m] = array[k - 1][m]
      # -1を含む計算
      elif k - 1 == -1:
          array[k][m] = array[k][m - 1]
      elif m - 1 == -1:
          array[k][m] = array[k - 1][m]
      else:
          array[k][m] = array[k - 1][m] + array[k][m - 1]
  
      # Kが閾値を超えていないで
      if k + 1 < H:
          # -1出もなくて、上下に値がある場合
          if array[k + 1][m] != -1:
              search(k + 1, m)
      if m + 1 < W:
          if array[k][m + 1] != -1:
              search(k, m + 1)
  
  
  # 升目の計算
  QUE = deque()
  array[0][0] = 1
  
  # search(0,0)
  
  for i in range(0, H):
      for j in range(0, W):
  
          if (0 < i and 0 < j) and array[i][j] != -1:
              if array[i - 1][j] >= 1 and array[i][j - 1] >= 1:
                  array[i][j] = array[i - 1][j] + array[i][j - 1]
              elif array[i - 1][j] == -1:
                  array[i][j] = array[i][j] + array[i][j - 1]
              elif array[i][j - 1] == -1:
                  array[i][j] = array[i - 1][j] + array[i][j]
  
          # #iが閾値を超えていないで
          # if i+1<H :
          #     #-1出もなくて、上下に値がある場合
          #     if array[i+1][j]!=-1 :
          #         search(i+1,j)
          # if j+1<W :
          #     if array[i][j+1]!=-1 :
          #         search(i,j+1)
  
  # print(*array,sep="\n")
  print(array[H - 1][W - 1])
  
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"}]