output_description: If it is possible to construct a Haiku by using each of the phrases once,
  print `YES` (case-sensitive). Otherwise, print `NO`.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      A B C
attempt: H, W, A, B = map(int, input().split())
  answer = 0
  mod = 1000000007
  factorial = [1]
  for n in range(1, H + W):
      factorial.append(factorial[n - 1] * n % mod)
  
  
  def power(x, y):
      if y == 0:
          return 1
      elif y == 1:
          return x % mod
      elif y % 2 == 0:
          return power(x, y / 2) ** 2 % mod
      else:
          return power(x, y / 2) ** 2 * x % mod
  
  
  inverseFactorial = [0] * (H + W)
  inverseFactorial[H + W - 1] = power(factorial[H + W - 1], mod - 2)
  for n in range(H + W - 2, -1, -1):
      inverseFactorial[n] = inverseFactorial[n + 1] * (n + 1) % mod
  
  
  def combi(n, m):
      return factorial[n] * inverseFactorial[m] * inverseFactorial[n - m] % mod
  
  
  for i in range(B + 1, W + 1):
      answer = (answer + combi(H - A - 2 + i, i - 1) * combi(A + W - i - 1, W - i)) % mod
  print(answer)
  
problem_description: Statement
  
  Iroha loves _Haiku_. Haiku is a short form of Japanese poetry. A Haiku
  consists of three phrases with 5, 7 and 5 syllables, in this order.
  
  To create a Haiku, Iroha has come up with three different phrases. These
  phrases have A, B and C syllables, respectively. Determine whether she can
  construct a Haiku by using each of the phrases once, in some order.
samples: [{"input": "5 5 7", "output": "YES\n    \n\nUsing three phrases of length 5, 5 and 7, it is possible to construct a Haiku.\n\n* * *"}, {"input": "7 7 5", "output": "NO"}]