定义一个排列 $p_1,p_2,\cdots,p_n$ 的面积为:将排列中的每个数 $p_i$ 看做二维坐标平面上的一个点 $(i,p_i),这 $n$ 个点的凸包的面积。
现在 cats 有一个长为 $n$ 的数组 $a_1,a_2,\cdots,a_n$ ,其中每个数均为一个 $1$ 到 $n$ 之间的正整数或 $−1$。你需要求出将所有 $−1$ 替换成 $1$ 到 $n$ 之间的正整数后,形成的所有排列的面积之和对 $10^9 +7$ 取模的结果。
可以证明答案一定可以被表示为一个有理数 $\frac{x}{y}$ 。其中 $x$ 与 $y$ 互质。你需要输出 $x⋅y^{−1} \bmod(10^9
+7)$。可以证明 $(10^9 +7) \nmid y$。
注1:一个长为 $n$ 的数组 $p_1,p_2,\cdots,p_n$ 是一个排列,当且仅当 $1$ 到 $n$ 之间的每一个正整数都在 $p_1,p_2,\cdots,p_n$ 中出现且仅出现一次。
注2:$n$ 个点 $(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)$ 的凸包为:所有满足存在 $n$ 个范围在 $[0,1]$ 之间的实数 $w_1,w_2,\cdots,w_n$ ,使得 $∑_{i=1}^nw_i \cdot x_i = x$,$\sum_{i=1}^nw_i \cdot y_i=y$ 的点 $(x,y)$ 在二维坐标平面上组成的图形。
第一行包含一个整数 $T (1≤T≤1000)$,表示一共有 $T$ 组测试数据。
每组测试数据的第一行包含一个整数 $n(1≤n≤50)$,表示数组 $a$ 的长度。
每组测试数据的第二行包含 $n$ 个整数 $a_1,a_2,\cdots,a_n(-1 \le a_i \le n, a_i \neq 0)$,表示数组 $a$。
保证对于任意的 $1≤i\lt j≤n$,若 $a_i$ 和 $a_j$ 均不为 $−1$,则 $a_i \neq a_j$。
保证所有测试数据的 $n^3$ 之和不超过 $5⋅10^5$ 。
对于每组测试数据,输出一个整数,表示形成的所有排列的面积之和对 $10^9 +7$ 取模的结果。
5 3 1 2 3 4 2 -1 -1 3 4 1 2 -1 3 1 1 7 -1 -1 -1 -1 -1 -1 -1
\n \n · · \n \n · · · \n \n · · · \n \n \n \n · · · · · · \n
0 9 500000006 0 99546
\n \n \n \n \n