题目描述
小浩有一串长度为 N 的序列 A 。该序列是一个 1∼n 的特殊排列,即在位置 i 的数 Ai 不等于 i 且数字不重复。
但小浩的朋友小鹏,因为被小浩惹生气了,所以他把序列 A 中的一些数字改成了 −1。
现在,小浩用 1 到 n 里的数 替换所有的 −1,一共有多少种构造方案能构造回一个 1−n 的特殊排列。
输入格式
第一行包含整数 N(2⩽n⩽2000)
在第二行中,有 N 个整数,表示小鹏修改之后的序列 A。
输入保证 Ai 不等于 i,给定的序列至少包含两个数字 −1,且每个正数最多在序列中出现一次,它保证至少有一个特殊排列。
输出格式
输出一个整数,即小浩有多少种方案把它恢复为特殊排列,若没有 −1,输出 0。答案对 1000000007(109+7) 取模。
样例 #1
样例输入 #1
5
-1 -1 4 3 -1
样例输出 #1
2
提示
对于样例,只有 [2,5,4,3,1] 和 [5,1,4,3,2] 满足条件。