Page not loading? Try clicking here.
Placeholder

#3656

배열의 개수 1 2s 512MB

Problems

길이 N짜리 배열 A가 주어진다. A[i] = 0인 곳에 적절한 정수를 채워 다음 조건을 만족하도록 수열을 만드는 경우의 수를 구하는 프로그램을 작성하여라.

  1. 1 ≤ A[i] ≤ N
  2. A[i] ≠ i (1 ≤ i ≤ N)
  3. A[i] ≠ A[j] (1 ≤ i ≠ j ≤ N)​

Input

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000)

둘째 줄에 A[i]가 주어진다. (0 ≤ A[i] ≤ N)​ 


Output

만들 수 있는 배열 A의 개수를 1,000,000,007로 나눈 나머지를 출력한다.

 


Example #1

4

0 0 0 0
9

Example #2

5

3 0 0 1 0
3

Example #3

5

0 0 2 2 0
0
You must sign in to write code.