형제와 자매
시간 제한1.5초메모리 제한512 MB
0번 소녀와 1번부터 n번까지의 소녀로 이루어진 함수형 그래프에서 무작위 탐색으로 0번에 도달할 때까지 물어본 소녀 수의 기댓값을 10^9+7로 나눈 나머지를 구한다.
문제
진송과 진희는 남매다. 두 사람은 같은 대학교에 다닌다. 진송은 ICPC 훈련 동아리 회원이고, 진희는 영어 동아리 회원이다.
오늘은 진희의 열일곱 번째 생일이고, 동시에 대학교에서 맞는 첫 생일이다. 그래서 좋은 오빠인 진송은 예쁜 여동생을 위해 멋진 선물을 준비했다. 그런데 장난꾸러기 여동생은 진송이 일어나기 전에 학교로 가 버렸고, 진송은 영어 동아리로 가서 생일 선물을 주기로 했다.
진희는 아주 영리한 아이라 오빠가 분명히 자기를 보러 올 것이라고 생각하고, 오빠에게 재미있는 장난을 준비하기로 했다. 영어 동아리에는 진희의 동료가 명 있고, 모두 진희의 생각에 동의했다. 먼저 진희는 자기와 동료들에게 번호를 붙였다. 진희는 번이고, 동료들은 부터 까지 서로 다른 정수로 번호가 매겨진다. 그다음 동료들에게 자기와 똑같은 교복과 두꺼운 안경을 착용하게 해서 명의 여학생이 완전히 똑같아 보이게 만들었다. 그 결과 진송은 혼란스러워하며 여동생을 찾으려 할 것이다. 장난은 다음과 같이 진행된다.
- 진송은 아직 물어보지 않은 여학생 를 무작위로 균등하게 고른다.
- 고른 여학생에게 "너는 내 여동생이니?"라고 묻는다. 지금 고른 여학생 가 진희라면(즉 ), 진희는 즉시 장난을 끝낸다. 그렇지 않으면 여학생 는 진희가 번 여학생이라고 말한다. 값은 진송이 오기 전에 미리 정해 둔다.
- 라면(즉 동료가 자기 자신이 진희라고 말한다면), 또는 진송이 이미 번 여학생에게 물어봤다면, 진송은 그 여학생이 거짓말을 했다는 것을 알아차리고 1단계로 간다. 그렇지 않으면 번 여학생에게 계속 물어보며 2단계로 간다.
진송은 여동생을 최대한 빨리 찾고 싶어 하고, 영리한 여동생을 찾는 데 얼마나 걸릴지 알고 싶어 한다.
여러분의 과제는 장난이 끝날 때까지 진송이 물어봐야 하는 여학생 수(여동생 포함)의 기댓값을 구하는 것이다.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다 ().
각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에 진희의 동료 수 이 주어진다 (). 둘째 줄에 개의 정수 이 공백으로 구분되어 주어진다. 는 동료 가 진송을 보내는 동료의 번호다 ().
출력
기댓값은 꼴의 기약분수로 나타낼 수 있음이 보장된다(즉 와 는 서로소인 정수다). 따라서 각 테스트 케이스마다 한 줄에 정수 을 출력한다.
힌트
예시에서 첫 번째 여학생을 고르는 방법은 4가지다. 그리고 진송이 첫 번째 여학생을 고른 뒤에 벌어지는 일은 유일하게 결정된다. 한 가지는 여동생을 먼저 고르는 것이고, 나머지는 1, 2, 3을 고르는 것이다.
여동생을 먼저 고르면 장난이 즉시 끝나고, 모두 1명의 여학생에게 물어본다.
1번 여학생을 먼저 고르면 1, 2, 3번 여학생에게 물어본다. 그러고 나서 그들이 거짓말을 했다는 것을 알아차리고 곧바로 여동생에게 간다. 따라서 순서로 모두 4명의 여학생에게 물어본다.
2번이나 3번 여학생을 먼저 고르는 경우도 1번을 고르는 경우와 비슷하다. 여학생의 순서는 각각 과 이다.
각 경우는 모두 의 같은 확률로 일어난다.
따라서 답은 이다.