강호의 초대

각 친구가 싫어하는 한 명이 주어질 때, 무작위 초대 순서에서 초대를 수락하는 친구 수의 기댓값을 구한다.

보통6확률수학조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

강호가 친구 NN명을 파티에 초대하려고 한다. 친구에게는 00번부터 N1N-1번까지 번호가 붙어 있다.

친구는 저마다 싫어하는 친구가 많아야 한 명이다. ii번 친구가 싫어하는 친구의 번호는 AiA_i이고, AiA_iii와 같으면 ii번 친구는 싫어하는 친구가 없다.

강호는 친구를 한 번에 한 명씩 초대한다. ii번 친구는 AiA_i번 친구가 아직 초대를 받지 않았거나, 이미 초대를 받고 거절한 경우에만 초대를 승낙한다. 즉 AiA_i번 친구가 ii번 친구보다 먼저 초대를 받고 승낙했다면, ii번 친구는 초대를 거절한다.

초대하는 순서에 따라 승낙하는 친구의 수가 달라진다. 그래서 강호는 N!N!가지 순서 중 하나를 균등한 확률로 골라 그 순서대로 초대하기로 했다.

강호의 초대를 승낙하는 친구 수의 기댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 친구의 수 NN (1N501 \le N \le 50)이 주어진다.

둘째 줄에 A0,A1,,AN1A_0, A_1, \dots, A_{N-1}이 공백으로 구분되어 주어진다. (0AiN10 \le A_i \le N-1)

출력

초대를 승낙하는 친구 수의 기댓값을 소수점 아래 열째 자리까지 반올림해 한 줄에 출력한다. 뒤따르는 00도 생략하지 말고 소수점 아래를 정확히 1010자리로 채워서 출력한다. 채점 데이터에는 정답이 반올림 경계에 놓이는 경우가 없다.

설명

N=3N = 3이고 A0=0A_0 = 0, A1=1A_1 = 1, A2=1A_2 = 1인 경우를 보자. 00번과 11번은 싫어하는 친구가 없고, 22번은 11번을 싫어한다. 초대 순서는 여섯 가지다. (1,0,2)(1, 0, 2) 순서로 초대하면 11번과 00번은 승낙하지만 22번은 거절한다. (2,1,0)(2, 1, 0) 순서로 초대하면 세 명 모두 승낙한다. 여섯 가지 순서를 모두 따져 보면 승낙하는 친구 수의 기댓값은 2.52.5다.