C1680 [Wannafly冬令营2018Day5]Doppelblock

内存限制:256 MB 时间限制:1000 ms

题目描述

你有一个 $n*n$ 的矩阵,一开始都是空的,你要在其中填入 $1$ 到 $n-2$ 的数字和字符 $X$。

要求每行每列中 $1$ 到 $n-2$ 中的每个数都恰好出现了一次,并且恰好有两个字符 $X$。

同时对于第 $i$ 行,要求两个 $X$ 之间的数字之和为 $r_i$,第 $i$ 列,要求两个 $X$ 之间的数字之和为 $c_i$。

输入格式

多组数据,第一行一个整数 $T(1\leq T\leq 50)$,表示数据组数。

对于每组数据,第一行一个整数 $n (5\leq n\leq 7)$。

接下来两行,每行 $n$ 个整数,分别表示 $r_1, r_2, \dots, r_n$ 和 $c_1, c_2, \dots, c_n$。

输出

对于每组数据,输出一个 $n$ 个长度为 $n$ 的字符串,表示你填入的数字和字符。

数据之间用一个空行隔开。数据保证存在唯一解。

样例

样例输入 1

2 5 4 3 0 1 0 6 5 0 2 3 7 5 7 3 2 12 3 11 8 6 4 2 9 11 9

样例输出 1

X13X2 3X12X 12XX3 23X1X XX231 253X41X 4X52X31 142X3X5 X2X4153 3X4152X 51X3X42 X3152X4

提示