#P14108. [ZJCPC 2017] Domino Tiling

[ZJCPC 2017] Domino Tiling

Description

Chiaki 有一个 n×mn \times m 的矩形棋盘。她想用多米诺骨牌(即 2×12 \times 1 的矩形骨牌)铺满整个棋盘,要求满足:

  • 棋盘上的每一个格子都被覆盖,且任何两个骨牌不能重叠或部分跨出棋盘。
  • 不能存在四个不同骨牌的角同时相交的点。

下图展示了一些不允许出现的排布:

:::align{center} :::

下图展示了两个 4×44 \times 4 棋盘的合法铺法:

:::align{center} :::

你还需要为棋盘上的每一张多米诺骨牌编上不同的编号。编号可以从 11n×mn \times m 之间任意选择。

Input Format

有多组测试数据。输入的第一行为一个整数 TT,表示测试数据的组数。对于每组数据:

第一行包含两个整数 nnmm1n,m1001 \le n, m \le 100),表示矩形棋盘的大小。

保证所有测试用例中 n×mn \times m 的总和不超过 2×1062 \times 10^6

Output Format

对于每组测试数据,输出一种满足题意要求的棋盘。输出共 nn 行,每行 mm 个整数。输出中的每个整数代表骨牌的 idid,相同 idid 的格子属于同一张骨牌。

如果无解,则输出 “Impossible!”(不含引号)。

3
1 1
4 3
4 4
Impossible!
1 2 2 
1 3 3 
5 5 4 
6 6 4 
1 1 3 3 
5 7 7 6 
5 8 8 6 
2 2 4 4 

Hint

由 ChatGPT 5 翻译