小蓝正在两台电脑之间拷贝数据,数据是一个 n × m 大小的正整数矩阵, 因此总共有 n × m + 2 个由空格分开的整数,其中前两个整数分别为 n 和 m 。 然而,有黑客入侵了小蓝的电脑,导致这 n × m + 2 个正整数的顺序被打乱了, 小蓝想知道最多可能有多少个不同的原矩阵。
两个矩阵相同当且仅当它们行数相同、列数分别相同,且每个位置上的数相同。
输入的第一行包含一个正整数 n × m + 2 。
第二行包含 n × m + 2 个正整数 a1, a2, · · · , an×m+2 ,相邻整数之间使用一个空格分隔。
输出一行包含一个整数表示答案。答案可能很大,请输出答案除以 1000000007 的余数。
6 2 2 1 4 3 3
24
【样例说明】
1)(n, m) = (1, 4):有 6 种原矩阵:(2, 2, 3, 3) ,(2, 3, 2, 3) ,(2, 3, 3, 2) , (3, 2, 2, 3) ,(3, 2, 3, 2) ,(3, 3, 2, 2);
2)(n, m) = (4, 1):有 6 种原矩阵;
3)(n, m) = (2, 2):有 12 种原矩阵;
【评测用例规模与约定】
对于 40% 的评测用例,1 ≤ n × m + 2 ≤ 10 ;
对于所有评测用例,1 ≤ n × m + 2 ≤ 5 × 105 ,1 ≤ ai ≤ 5 × 105 。