#agc030f. [agc030_f]Permutation and Minimum
[agc030_f]Permutation and Minimum
问题描述
有一个长度为 的序列:。每个 要么是 ,要么是介于 和 (包括)之间的整数。除了 之外的任何整数在 中最多出现一次。
对于每个满足 的 ,Snuke 将 替换为介于 和 (包括)之间的整数,使得 成为 的一个排列。然后,他找到一个长度为 的序列 ,其中 。
求出 可能的不同序列的数量,对 取模。
约束条件
- 或者 。
- 如果 ,则 。 ()
输入
输入通过标准输入给出,格式如下:
输出
输出 可能的不同序列的数量,对 取模。
示例输入 1
3
1 -1 -1 3 6 -1
示例输出 1
5
使 成为 的排列共有六种方式;对于每一种方式, 如下所示:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 4, 3, 6, 5)$:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 5, 3, 6, 4)$:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 2, 3, 6, 5)$:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 5, 3, 6, 2)$:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 2, 3, 6, 4)$:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 4, 3, 6, 2)$:
因此, 可能的不同序列的数量为五个。
示例输入 2
4
7 1 8 3 5 2 6 4
示例输出 2
1
示例输入 3
10
7 -1 -1 -1 -1 -1 -1 6 14 12 13 -1 15 -1 -1 -1 -1 20 -1 -1
示例输出 3
9540576
示例输入 4
20
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 -1 -1 -1 -1 -1 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 34 -1 -1 -1 -1 31 -1 -1 -1 -1 -1 -1 -1 -1
示例输出 4
374984201