def solution(m, n, puddles):
dp = [[-1 for _ in range(m)] for _ in range(n)]
dp[0][0] = 0
for i in range(1,m):
dp[0][i] = 1
for i in range(1,n):
dp[i][0] = 1
for puddle in puddles:
dp[puddle[1]-1][puddle[0]-1] = 0
for i in range(n):
for j in range(m):
if dp[i][j] == -1:
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[-1][-1] % 1000000007
def solution(m, n, puddles):
dp = [[-1 for _ in range(m)] for _ in range(n)]
for puddle in puddles:
dp[puddle[1] - 1][puddle[0] - 1] = 0
for i in range(1,m):
if dp[0][i] == 0:
for j in range(i, m):
dp[0][j] = 0
break
dp[0][i] = 1
for i in range(1, n):
if dp[i][0] == 0:
for j in range(i, n):
dp[j][0] = 0
break
dp[i][0] = 1
dp[0][0] = 0
for i in range(n):
for j in range(m):
if dp[i][j] == -1:
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
return dp[-1][-1] % 1000000007