考虑一个 $N \times N$ 的棋盘。棋盘上有 $K \le N$ 个棋子。这些棋子最初放置在棋盘顶部的某些方格中。
位于方格 $(r, c)$ 的棋子可以向右移动一格到 $(r, c + 1)$,或者向下移动一格到 $(r + 1, c)$。
你的任务是计算有多少种不同的方式将所有棋子移动到棋盘底部的给定位置,使得任意两个不同棋子的路径没有公共方格。如果存在某个棋子在两种方式中经过的路径不同,则认为这两种方式是不同的。由于方案数可能非常大,请输出其对 $10^9 + 7$ 取模的结果。
输入格式
第一行包含一个整数 $T$,表示测试用例的数量 ($1 \le T \le 400$)。
每个测试用例的第一行包含两个整数 $N$ 和 $K$,分别表示棋盘的大小和棋子的数量 ($1 \le N \le 10^5, 1 \le K \le 100$)。
第二行包含 $K$ 个整数 $a_1, a_2, \dots, a_K$,表示棋子的初始位置 ($1 \le a_1 < a_2 < \dots < a_K \le N$)。形式化地,棋子最初位于方格 $(1, a_1), (1, a_2), \dots, (1, a_K)$。
第三行包含 $K$ 个整数 $b_1, b_2, \dots, b_K$,表示棋子的最终位置 ($1 \le b_1 < b_2 < \dots < b_K \le N$)。形式化地,棋子最终应移动到 $(N, b_1), (N, b_2), \dots, (N, b_K)$。
所有测试用例中 $N$ 的总和不超过 $2 \cdot 10^7$。 所有测试用例中 $K$ 的总和不超过 $2 \cdot 10^4$。
输出格式
输出 $T$ 行,每行对应一个测试用例。每行必须包含移动棋子的不同方案数,对 $10^9 + 7$ 取模。
样例
样例输入 1
1 5 2 1 2 3 4
样例输出 1
50