output_description: Print the number of Taro's paths from Square (1, 1) to (H, W), modulo 10^9 +
  7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      H W N
      r_1 c_1
      r_2 c_2
      :
      r_N c_N
attempt: import sys
  
  input = sys.stdin.readline
  
  
  def solve():
      MOD = 10**9 + 7
  
      H, W, N = map(int, input().split())
      rcs = [tuple(map(int, input().split())) for _ in range(N)]
  
      def getFacts(n, MOD):
          facts = [1] * (n + 1)
          for x in range(2, n + 1):
              facts[x] = (facts[x - 1] * x) % MOD
          return facts
  
      facts = getFacts(H + W, MOD)
  
      def getInvFacts(n, MOD):
          invFacts = [0] * (n + 1)
          invFacts[n] = pow(facts[n], MOD - 2, MOD)
          for x in reversed(range(n)):
              invFacts[x] = (invFacts[x + 1] * (x + 1)) % MOD
          return invFacts
  
      invFacts = getInvFacts(H + W, MOD)
  
      def getNum(r, c, MOD):
          return facts[r + c] * invFacts[r] * invFacts[c] % MOD
  
      dp = [0] * N
      for i, (r1, c1) in enumerate(rcs):
          v = getNum(r1 - 1, c1 - 1, MOD)
          for j, (r0, c0) in enumerate(rcs):
              if i == j or r0 > r1 or c0 > c1:
                  continue
              dr, dc = r1 - r0, c1 - c0
              v -= getNum(dr, dc, MOD)
              v %= MOD
          dp[i] = v
  
      ans = getNum(H - 1, W - 1, MOD)
      for i, (r, c) in enumerate(rcs):
          dr, dc = H - r, W - c
          ans -= dp[i] * getNum(dr, dc, MOD)
          ans %= MOD
  
      print(ans)
  
  
  solve()
  
problem_description: Statement
  
  There is a grid with H horizontal rows and W vertical columns. Let (i, j)
  denote the square at the i-th row from the top and the j-th column from the
  left.
  
  In the grid, N Squares (r_1, c_1), (r_2, c_2), \ldots, (r_N, c_N) are wall
  squares, and the others are all empty squares. It is guaranteed that Squares
  (1, 1) and (H, W) are empty squares.
  
  Taro will start from Square (1, 1) and reach (H, W) by repeatedly moving right
  or down to an adjacent empty square.
  
  Find the number of Taro's paths from Square (1, 1) to (H, W), modulo 10^9 + 7.
samples: [{"input": "3 4 2\n    2 2\n    1 4", "output": "3\n    \n\nThere are three paths as follows:\n\n![](https://img.atcoder.jp/dp/grid_1_0_muffet.png)\n\n* * *"}, {"input": "5 2 2\n    2 1\n    4 2", "output": "0\n    \n\nThere may be no paths.\n\n* * *"}, {"input": "5 5 4\n    3 1\n    3 5\n    1 3\n    5 3", "output": "24\n    \n\n* * *"}, {"input": "100000 100000 1\n    50000 50000", "output": "123445622\n    \n\nBe sure to print the count modulo 10^9 + 7."}]