타카하시의 기차 퍼즐 놀이 1

시간 제한1초메모리 제한512 MB

요약
회전할 수 없는 4가지 블록으로 높이 r(최대 2), 너비 c인 직사각형을 빈틈없이 채우고, 행 문자열을 이어 붙여 사전순 k번째 문자열을 구한다.
난이도

어려움10점 중 8점

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

문제

타카하시는 컴퓨터로 기차 퍼즐 게임을 하고 있었습니다. 반복된 퍼즐 게임에 질렸던 타카하시는 여러분들에게 다음과 같은 질문을 하였습니다.

[그림 1] 왼쪽 위부터 시계 방향으로 11번, 22번, 44번, 33번 블록

[그림 2] 덮이지 않는 공간이 하나 이상 있는 경우

세로 길이가 rr이고 가로 길이가 cc인 직사각형 모양의 퍼즐이 있어. 퍼즐에는 11번부터 44번까지 회전할 수 없는 44가지 블록이 있고, 각 블록은 제한 없이 쓸 수 있어. 블록들을 퍼즐 영역 내부에 빈틈없이 채우려고 해. 블록들을 모두 채운 후에, rr행 cc열에 있는 블록에 아래와 같은 규칙으로 문자를 하나 쓸 거야.

  • bb번 블록이 있으면 문자 bb를 적는다.

rr행 11열에 있는 문자부터, rr행 cc열까지 쓰여 있는 문자까지 차례대로 이어서 만든 문자열을 S_rS\_{r}이라고 할 거야. 나는 S_1S\_{1}부터 S_rS\_{r}까지 차례대로 이어 붙여서 문자열 RR을 만들려고 해. 채울 수 있는 방법이 여러 가지라면 문자열 RR도 여러 개 나올 수 있겠지? 나는 이 중, 사전순으로 kk번째인 문자열을 알고 싶어.

타카하시의 질문을 해결해 주세요.

입력

첫 번째 줄에 QQ가 주어집니다.

두 번째 줄부터 QQ개의 줄에 걸쳐 rr, cc, kk가 공백으로 구분되어 주어집니다.

출력

QQ개의 줄에 걸쳐 문제의 답을 아래와 같이 한 줄에 하나씩 출력해 주세요.

  • 세로 길이가 rr이고 가로 길이가 cc인 직사각형 모양의 퍼즐을 채울 수 있는 방법이 없거나 답이 되는 문자열 RR이 없다면, -1을 출력해 주세요.
  • 그렇지 않으면 사전순으로 kk번째인 문자열 RR을 만들기 위해 사용했던 S_1,..,S_rS\_{1}, .. , S\_{r}을 rr개의 줄에 걸쳐서 다음 조건에 맞춰 출력해 주세요.
    • ii번째 줄에 S_iS\_{i}를 출력합니다.

각 질문에 대한 답은 개행으로 구분합니다.

제한

  • 1≤Q≤1061 \leq Q \leq 10^{6}
  • 1≤r≤21 \leq r \leq 2
  • 1≤c≤1061 \leq c \leq 10^{6}
  • 1≤k≤10181 \leq k \leq 10^{18}
  • 입력으로 주어지는 모든 수는 정수입니다.
  • 테스트 케이스에 있는 모든 cc의 합은 10610^{6}을 넘지 않습니다.

예제2

  1. 예제 1

    입력
    3
    2 3 1
    2 3 48
    2 3 36363636
    
    예상 출력
    114
    144
    -1
    -1
    
  2. 예제 2

    입력
    3
    2 6 5
    1 9 1
    2 3 2
    
    예상 출력
    -1
    -1
    322
    332