최소 신장 트리
시간 제한4초메모리 제한512 MB
각 간선이 가중치 1부터 k 중 하나를 가지거나 없는 무작위 그래프에서, 연결되고 최소 신장 트리 가중치가 s인 확률을 s마다 구합니다.
문제
어느 날 Subconscious는 지난 대회에서 겪었던 끔찍한 경험이 떠오르는 문제를 마주했다. 그 대회에서 가장 쉬운 문제는 무작위로 생성된 그래프에서 최소 신장 트리의 개수를 세는 것이었다.
이제 부터 까지 번호가 붙은 개의 정점으로 이루어진 그래프가 있다. 정점 쌍 , ()마다 두 정점 사이에 간선이 없을 확률은 , 가중치가 1인 간선이 있을 확률은 , 가중치가 2인 간선이 있을 확률은 , 이하 같은 방식으로 가중치가 인 간선이 있을 확률은 이다. 여기서 는 간선의 최대 가중치다. 모든 간선은 서로 독립적으로 생성된다.
그래프가 연결되지 않을 수도 있으므로 최소 신장 트리 가중치의 기댓값을 구하는 것이 아니다. 대신 이상 이하의 각 정수 에 대해, 그래프가 연결되어 있고 최소 신장 트리의 가중치가 정확히 일 확률을 구하라.
Subconscious는 이 문제를 풀었다고 생각하지만 자신의 풀이가 맞는지 확신하지 못한다. 그래서 답을 로 나눈 나머지 기준으로 당신과 함께 확인하려 한다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에는 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스의 첫 줄에는 정점의 개수 ()과 간선의 최대 가중치 ()가 주어진다. 다음 줄에는 음이 아닌 정수 가 공백으로 구분되어 주어지며, 이다.
인 테스트 케이스는 최대 20개이고, 인 테스트 케이스는 최대 2개임이 보장된다.
출력
각 테스트 케이스마다 개의 정수를 한 줄에 출력한다. 번째 정수는 그래프가 연결되어 있고 최소 신장 트리의 가중치가 정확히 인 확률을 을 법으로 한 나머지다.
더 정확히 말하면, 확률을 기약분수 로 나타냈을 때 을 만족하는 0 이상의 가장 작은 정수 을 출력한다. 모든 테스트 케이스에서 그러한 이 항상 존재한다고 가정해도 된다.