#CSES1078. 网格路径

网格路径

题目背景

翻译自 CSES-1078 题。

题目描述

考虑一个 n×nn \times n 的网格,其中左上角的格子是 (1,1)(1, 1),右下角的格子是 (n,n)(n, n)

你的任务是从左上角的格子移动到右下角的格子。在每一步中,你可以向右或向下移动一个格子。此外,网格中有 mm 个陷阱,你不能移动到含有陷阱的格子。

你需要计算从左上角到右下角的所有可能路径的总数。

输入格式

第一行包含两个整数 nnmm:分别表示网格的大小和陷阱的数量。

接下来的 mm 行每行描述一个陷阱的位置,每行包含两个整数 yyxx,表示陷阱的位置为 (y,x)(y, x)

你可以假设左上角 (1,1)(1, 1) 和右下角 (n,n)(n, n) 处没有陷阱。

输出格式

输出一个整数:表示从左上角到右下角的路径数量,结果对 109+710^9 + 7 取模。

样例

3 1
2 2
2

说明/提示

1n1061 \leq n \leq 10^6

1m10001 \leq m \leq 1000

1y,xn1 \leq y, x \leq n