생물 연구

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

괴짜 생물학자 정후는 단세포생물 YJ (Yeonguk Jo)에 대한 연구를 하고 있다. 연구를 위해 정후는 YJ 1마리를 배양해서 YJ N1N-1마리를 추가로 얻었다. NN마리의 YJ에 대한 가계도는 트리를 이룬다. 즉, 초기 배양에 쓰인 YJ를 제외한 모든 YJ는 정확히 1마리의 부모를 가진다. 부모가 없는 YJ는 루트라고 부르며, 어떤 YJ의 세대는 가계도 상에서 루트까지의 거리로 정의된다. 서로 다른 두 YJ에 대해 이들의 최소 공통 조상은 가계도 상에서 최소 공통 조상으로 정의된다.

정후는 실험에 쓸 YJ 몇 마리를 선택하려고 한다. 선택한 YJ의 집합을 SS라고 할 때, 다음 조건들을 만족해야 한다.

  • 대조군과 실험군을 설정하기 위해 S2|S| \ge 2를 만족해야 한다.
  • SS의 모든 원소는 동일한 세대여야 한다.
  • 유전정보가 비슷한 YJ가 존재하면 곤란하기 때문에 SS의 임의의 서로 다른 두 원소의 최소 공통 조상은 전부 동일해야한다.

정후는 이러한 집합이 몇 개 존재하는지 궁금해졌다. 정후를 위해 가능한 집합의 개수를 109+710^9+7로 나눈 나머지를 구해주자!

입력

첫 번째 줄에 정수 NN이 주어진다.

두 번째 줄에 NN개의 정수 P_1,P_2,,P_NP\_1, P\_2, \ldots, P\_N이 주어진다. P_i=1P\_i = -1라면 ii가 루트라는 뜻이다. 그 외의 경우, P_i=jP\_i = j라면 ii번 YJ의 부모가 jj번 YJ라는 뜻이다.

출력

첫 번째 줄에 가능한 YJ의 집합의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 2N2×1052 \le N \le 2 \times 10^5
  • P_1=1P\_1 = -1
  • 1P_i<i1 \le P\_i < i (2iN)(2 \le i \le N)