import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int a,b;
Scanner cin=new Scanner(System.in);
BigInteger dp[]=new BigInteger[1807];
dp[0]=BigInteger.valueOf(0);
dp[1]=BigInteger.valueOf(0);
dp[2]=BigInteger.valueOf(1);
for(b=3;b<900;b++)
dp[b]=(dp[b-1].add(dp[b-2])).multiply(BigInteger.valueOf(b-1));
while(true){
a=cin.nextInt();
if(a==-1)break;
System.out.println(dp[a]);
}
}
}
一个捣乱的小孩拿走了n个物品,然后随机放回去,求共多少种方法
转移方程dp[i]=(dp[i-1]+dp[i-2])*(i-1)