만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

HCPC 팀 짜기

시간 제한1초메모리 제한1024 MB

요약
각 사람의 희망 짝이 있다면 그 짝도 팀에 포함되는 3명 팀의 수를 셉니다.
난이도

보통10점 중 6점

유형
조합론, 그래프, 구현
정답자
아직 제출이 없습니다

문제

동민이는 HCPC 참가를 고민하는 사람 NN명 가운데 33명을 뽑아 팀을 만들어 주려고 한다.

각 사람에게는 11부터 NN까지 번호가 차례대로 매겨져 있다. 이 중에는 원하는 사람 한 명과 같은 팀이어야 참가하는 사람도 있고, 원하는 사람이 없어서 누구와 같은 팀이든 상관없이 참가할 수 있는 사람도 있다.

동민이는 각 사람이 원하는 사람이 있는지, 있다면 누구인지 모두 조사해 두었다. 하지만 어떤 조합으로 33인 팀을 만들 수 있는지는 아직 구하지 못했다. 동민이를 위해 33인 팀을 만들 수 있는 경우의 수를 계산하는 프로그램을 작성하시오. 답이 매우 커질 수 있으니 경우의 수를 109+710^9+7로 나눈 나머지를 출력한다.

입력

첫째 줄에 사람의 수를 의미하는 정수 NN이 주어진다. (1≤N≤500 000)(1 \le N \le 500\,000)

둘째 줄에 NN개의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다. Ai=iA_i = i이면 ii번 사람은 원하는 사람이 없다는 뜻이고, 그렇지 않으면 AiA_i는 ii번 사람이 원하는 사람의 번호이다. (1≤Ai≤N)(1 \le A_i \le N)

출력

NN명의 사람 중 33명을 뽑아 하나의 팀을 구성하는 경우의 수를 109+710^9+7로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    5
    2 1 1 4 5
    
    예상 출력
    3