아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Weltall

시간 제한4초메모리 제한256 MB

요약
1부터 n까지의 순열 중 정확히 k개의 고정점을 가지는 것들을 사전순으로 나열했을 때 d번째 순열을 구한다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 수학, 그리디
정답자
아직 제출이 없습니다

문제

인류 최초의 다른 은하 탐사 임무를 수행 중이다. 문제는 은하가 꽤 멀리 떨어져 있어서 시간이 아주 많다는 것이다.

그 시간을 우주선 운영에 필요한 여러 작업을 익히는 데 쓰기로 했다. 우주선에는 nn명의 사람이 있고, 각자 nn개의 서로 다른 역할 중 하나를 맡는다. 각 사람은 정확히 한 역할의 전문가이고, 각 역할에는 그 역할의 전문가가 정확히 한 명씩 있다. 사람에게 1부터 nn까지 번호를 매기고 역할에도 1부터 nn까지 번호를 매겨서, 사람 ii가 역할 ii의 전문가가 되도록 하자.

매일 모든 사람이 역할을 하나씩 맡고 모든 역할을 누군가가 수행하도록 사람을 역할에 배정해야 한다. 즉, 1과 nn 사이 수의 순열 a1,a2,…,ana_1, a_2, \dots, a_n을 골라야 한다.

우리는 정확히 kk명이 자신이 전문가인 역할을 맡고(우주선이 계속 날아가도록), 나머지 n−kn-k명은 자신이 전문가가 아닌 역할을 맡도록(배울 수 있도록) 배정하려 한다. 다시 말해 ai=ia_i=i인 위치 ii가 정확히 kk개 있어야 한다.

이런 배정은 많고, 같은 배정을 반복하면 학습이 느려지므로 비행 dd일째에는 사전순으로 dd번째 배정을 사용한다. 두 배정에서 역할이 다른 가장 작은 번호의 사람이 더 작은 번호의 역할을 맡으면 그 배정이 사전순으로 앞선다. 즉 ai<bia_i < b_i인 ii가 존재하고 모든 j<ij < i에 대해 aj=bja_j = b_j이다.

nn, kk, dd가 주어지면 그 배정을 구해야 한다.

입력

입력 파일의 첫 줄에는 테스트케이스의 수 tt가 주어진다. 1≤t≤501 \le t \le 50. 다음 tt개 줄에는 정수 3개 nn, kk, dd가 주어진다. 1≤n≤5001 \le n \le 500, 0≤k≤n0 \le k \le n이고, dd는 정확히 kk명이 자신의 전문 역할을 수행하는 nn명의 역할 배정의 총 개수 이하의 양의 정수이다.

출력

각 테스트케이스마다 해당 배정을 한 줄에 출력한다. 그 줄에는 1과 nn 사이의 정수 nn개가 공백으로 구분되어 있어야 한다.

예제1

  1. 예제 1

    입력
    8
    4 1 1
    4 1 2
    4 1 3
    4 1 4
    4 1 5
    4 1 6
    4 1 7
    4 1 8
    
    예상 출력
    1 3 4 2
    1 4 2 3
    2 3 1 4
    2 4 3 1
    3 1 2 4
    3 2 4 1
    4 1 3 2
    4 2 1 3