환상적인 압축
시간 제한3초메모리 제한512 MB
1부터 n까지의 순열에서 연속한 k개 원소의 합이 주어질 때, 이 합을 만드는 모든 순열을 사전순으로 구합니다.
문제
Franek에게는 맡은 일이 하나 있었다. 수열 의 순열 를 외우는 것이다. 하지만 이 일은 너무 지루했다. 그래서 그는 작은 정수 를 정하고, 에서 길이가 인 연속된 구간들의 합만 외우기로 했다. 이제 Franek은 수열 을 가지고 있다. 여기서
이다.
이 방법은 잘 통하지 않았다. 서로 다른 순열이 같은 압축 수열이 되는 경우가 있었다. 또한 Franek은 압축 수열을 정확히 기억했는지 확신할 수 없고, 원래 순열은 영영 잃어버렸을지도 모른다. 주어진 압축 수열 에 대응하는 모든 순열 를 찾아라.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다. 각 테스트 케이스는 다음 형식으로 주어진다.
테스트 케이스의 첫 줄에는 순열의 길이 과 Franek이 정한 작은 정수 가 주어진다 (; ). 둘째 줄에는 압축 수열 의 원소 개가 주어진다 ().
모든 테스트 케이스의 순열 길이 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 주어진 수열 에 대응하는 순열의 개수 를 먼저 출력한다. 이어서 개의 순열을 사전순으로, 한 줄에 하나씩 개의 정수를 공백으로 구분해 출력한다.
주어진 테스트에서 는 을 넘지 않는다고 가정한다.