문제
길이 N짜리 배열 A가 주어진다. A[i] = 0인 곳에 적절한 정수를 채워 다음 조건을 만족하도록 수열을 만드는 경우의 수를 구하는 프로그램을 작성하여라.
- 1 ≤ A[i] ≤ N
- A[i] ≠ i (1 ≤ i ≤ N)
- A[i] ≠ A[j] (1 ≤ i ≠ j ≤ N)
입력
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000)
둘째 줄에 A[i]가 주어진다. (0 ≤ A[i] ≤ N)
출력
만들 수 있는 배열 A의 개수를 1,000,000,007로 나눈 나머지를 출력한다.
예제 #1
4
0 0 0 0
9
예제 #2
5
3 0 0 1 0
3
예제 #3
5
0 0 2 2 0
0