#P9890. [ICPC 2018 Qingdao R] Tournament

[ICPC 2018 Qingdao R] Tournament

Description

DreamGrid,Gridland 的国王,正在举办一场骑士锦标赛。有 nn 名骑士,编号从 1 到 nn,参加这次锦标赛。锦标赛的规则如下:

  • 锦标赛由 kk 轮组成。每一轮由若干场决斗组成。每场决斗恰好在两名骑士之间进行。
  • 每名骑士在每一轮中必须参加一场决斗。
  • 对于每对骑士,在所有 kk 轮中最多只能有一场决斗。
  • 1i,jk1 \le i, j \le kiji \neq j,且 1a,b,c,dn1 \le a, b, c, d \le na,b,c,da, b, c, d 是四个不同的整数。如果
    • 骑士 aa 在第 ii 轮对战骑士 bb,并且
    • 骑士 cc 在第 ii 轮对战骑士 dd,并且
    • 骑士 aa 在第 jj 轮对战骑士 cc
  • 那么骑士 bb 必须在第 jj 轮对战骑士 dd

作为 DreamGrid 的将军,你需要编写一个程序来安排所有 kk 轮中的所有决斗,以便结果安排满足上述规则。

Input Format

有多个测试用例。输入的第一行是一个整数 TT,表示测试用例的数量。对于每个测试用例:

第一行包含两个整数 nnkk (1n,k10001 \le n, k \le 1000),表示参加锦标赛的骑士数量和轮数。

保证所有测试用例中 nnkk 的总和不超过 5000。

Output Format

对于每个测试用例:

  • 如果可以进行有效的安排,输出 kk 行。在第 ii 行,输出 nn 个整数 ci,1,ci,2,,ci,nc_{i, 1}, c_{i, 2}, \dots, c_{i, n},用空格分隔,表示在第 ii 轮中,骑士 jj 将与骑士 ci,jc_{i, j} 对战,所有 1jn1 \le j \le n。如果有多个有效答案,输出字典序最小的答案。考虑两个答案 AABB,记 ai,ja_{i, j} 为答案 AA 中第 ii 行的第 jj 个整数,bi,jb_{i, j} 为答案 BB 中第 ii 行的第 jj 个整数。答案 AA 在字典序上小于答案 BB,如果存在两个整数 pp (1pk1 \le p \le k) 和 qq (1qn1 \le q \le n),使得
    • 对于所有 1i<p1 \le i < p1jn1 \le j \le nai,j=bi,ja_{i, j} = b_{i, j},并且
    • 对于所有 1j<q1 \le j < qap,j=bp,ja_{p, j} = b_{p, j},最终 ap,q<bp,qa_{p, q} < b_{p, q}
  • 如果无法进行有效的安排,输出一行 “Impossible”(不带引号)。

请不要在每行末尾输出多余的空格,否则你的答案可能会被视为不正确!

2
3 1
4 3
Impossible
2 1 4 3
3 4 1 2
4 3 2 1

Hint

题面翻译由 ChatGPT-4o 提供。