이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.
대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.
모든 사람은 선물을 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.
첫째 줄에 ACM-ICPC 대회에 참가한 학생의 수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.
5
import sys
N = int(sys.stdin.readline())
if N <= 2:
print(N-1)
sys.exit()
dp = [0,1]
for i in range(3,N+1):
prev0,prev1 = dp[0],dp[1]
dp[0] = prev1
dp[1] = (i-1)*(prev0+prev1)%1000000000
print(dp[1])