小蓝正在两台电脑之间拷贝数据,数据是一个 n \times m 大小的正整数矩阵,因此总共有 n \times m + 2 个由空格分开的整数,其中前两个整数分别为 n 和 m。然而,有黑客入侵了小蓝的电脑,导致这 n \times m + 2 个正整数的顺序被打乱了。小蓝想知道最多可能有多少个不同的原矩阵。
两个矩阵相同当且仅当它们行数相同、列数相同,且每个位置上的数相同。
输入
输入的第一行包含一个正整数 n \times m + 2。
第二行包含 n \times m + 2 个正整数 a_1, a_2, \cdots, a_{n \times m+2},相邻整数之间使用一个空格分隔。
输出
输出一行包含一个整数表示答案。答案可能很大,请输出答案除以 1000000007 的余数。
样例
| 标准输入 复制文本 |
6 2 2 1 4 3 3 |
| 标准输出 复制文本 |
24 |
提示
可能的原矩阵情况包括:
对于 40\% 的评测用例,1 \leq n \times m + 2 \leq 10;
对于所有评测用例,1 \leq n \times m + 2 \leq 5 \times 10^5,1 \leq a_i \leq 5 \times 10^5。