난수 생성기

1부터 N까지의 값 중 아직 안 나온 개수와 한 번만 나온 개수를 바탕으로, 모든 값이 두 번 이상 나올 때까지 필요한 추가 추첨 횟수의 기댓값을 구한다.

어려움8확률동적 계획법수학구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

1부터 NN까지의 정수를 균등한 확률로 반환하는 난수 생성기가 있다. 생성기가 수를 반환할 때마다 친구가 그 수를 하나씩 기록한다. 11부터 NN까지의 모든 수가 적어도 두 번씩 기록되는 즉시 친구가 생성기를 멈춘다.

생성기는 이미 KK개의 수를 반환했고, ii번째로 반환된 수는 AiA_i이다. 친구가 아직 멈추지 않았으므로 11부터 NN까지의 수 중 적어도 하나는 아직 두 번 반환되지 않았다.

친구가 멈출 때까지 추가로 요청해야 하는 횟수의 기댓값을 구하라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다 (1T100,0001 \le T \le 100{,}000).

각 테스트 케이스의 첫째 줄에는 두 정수 NNKK가 주어진다 (1N3,0001 \le N \le 3{,}000, 0K100,0000 \le K \le 100{,}000). NN은 반환될 수의 범위이고 KK는 이미 요청한 수의 개수이다.

각 테스트 케이스의 둘째 줄에는 KK개의 정수 A1,A2,,AKA_1, A_2, \dots, A_K가 주어진다 (1AiN1 \le A_i \le N). K=0K = 0인 경우 이 줄은 비어 있다.

아직 모든 수가 두 번씩 반환되지는 않았다고 가정한다. 모든 테스트 케이스에 대한 KK의 합은 100,000100{,}000을 넘지 않는다.

출력

각 테스트 케이스마다 친구가 멈출 때까지 추가로 요청해야 하는 횟수의 기댓값을 한 줄에 출력한다.

절대 오차 또는 상대 오차가 10610^{-6} 이하이면 정답으로 인정한다.

힌트

앞으로 필요한 기댓값은 지금까지 각 수가 몇 번 등장했는지가 아니라, 아직 한 번도 등장하지 않은 수의 개수와 정확히 한 번 등장한 수의 개수에만 의존한다.

N=1N = 1이고 아직 아무 수도 보지 못한 경우 항상 22를 추가로 요청해야 한다. N=1N = 1이고 11이 이미 한 번 등장한 경우 답은 11이다.