密码

Time Limit: 2000/1000MS (Java/Others) Memory Limit: 262144/131072KB (Java/Others)

Problem Description

某保险箱的密码由一串奇怪的n个数字表示,其中第一个是0或1,第二个1或2,第三个是2或3……第n个是n-1或n。
为了传送密码不在传递中被泄露,某组织采用了这样一种方式:传送的信息是一个0至n的全排列,然后密码的第k位为传送的序列中k-1和k两个数字中靠前的一个。
比如:传送的是:3 0 1 2
      密码就是:0 1 3
      其中:第一位是0 和1 中靠前的数字0
            第二位是1 和2 中靠前的数字1
            第三位是2 和3 中靠前的数字3
现在为了测试这套系统的好坏,看看有多少排列对应的密码是一样的。
现给你一个密码序列,请你算出有多少全排列对应这个密码。

Input

输入有多组样例
每组样例第一行是一个数n(1<=n<1000
接下来有n个数字,密码序列,数字间以空格隔开

Output

输出答案mod 1000007的值

Sample Input

1
1
2
0 2

Sample Output

1
2

Hint

对于第一个样例,原序列只能是(1 0)一种
对于第二个样例,原序列可能是(0 2 1)(2 0 1)两种

Source

第九届北京化工大学程序设计竞赛

Manager

Information
Solved Number6
Submit Number42
Problem Tags
No tag edit access
温馨提示:AC后可以编辑标签哦. ^-^
Login
LoginCancel