第 39 届 Minecon 于 2048 年在线上举办,进入会馆的方块人将自己的武器装备存放在储物柜中。会上,BugJang 展示了一系列最新特性,意外地导致了服务器的异常。紧急撤离时,大家发现储物柜的区块文件已经被损坏了...
现有 n 位方块人,将装备编号分别为 1, 2,3,\dots ,n 的装备,存入了编号为与之对应的 n 个箱子中。由于区块损坏,箱子上的编号被随机打乱了,请你帮助大家确定自己的装备在哪个箱子里。
每个方块人独立进入崩溃的区块查看 n / 2 个箱子,如果在 n / 2 个箱子中找到了自己的装备,它的装备便不会丢失。
由于服务器的不稳定,进入崩溃区块的方块人只能查看箱子里的内容,而无法从箱子中拿走任何东西,同样的,它也无法将自己的获取到的信息发送给其他人,也就是说,对于每个人查看的 n / 2 个箱子,他们可以取得的信息是完全独立,不共享的。
现在请你设计一种查找方式,来尽可能地提高所有人都找到自己装备的概率。
形式上,你需要输出一个 n * (n / 2) 的矩阵 t,设第 i 行第 j 个数为 t_{i,j}:
那么玩家 i 查看的第 j 个箱子的编号 a_{i, j} 由以下规则确定:
若所有人都成功找到自己的装备,即 \forall i \in a_i ;则认为所有人都找到了自己的装备。
输入
输入仅一行,包含一个偶数 n (2 \leq n \leq 100) - 方块人的数量。
输出
输出一个 n 行 n/2 列的矩阵 t,表示每个人查看箱子的方式。
本题采用 Special Judge,对于每个输出,随机生成 10^4 个长度为 n 的排列,模拟 10^4 组箱子和装备被打乱的情况。
对于一组数据,若选手的查看方式使得所有人都找到了自己的装备,则认为完成该组任务。
若选手输出的查看方式能满足超过 2500 组 (25\%) 数据,则判定为通过。
样例
| 标准输入 复制文本 |
4 |
| 标准输出 复制文本 |
4 2 3 1 2 2 2 0 |
提示
输入 n = 4
设 SPJ 在某次测试中生成的排列为 p = [2, 3, 4, 1];表示此时:
对于输出样例:
1 号玩家查看规则为 [4, 2]: 首先查看 4 号箱子,成功找到自己的 p_4 = 1 号装备
不再继续寻找
2 号玩家查看规则为 [3,1]:
首先查看 3 号箱子,找到编号为 p_3 = 4 的装备
随后查看 (p_3 + 1 - 1) \mod n + 1 = 1 号箱子,成功找到编号为 p_1 = 2 号装备
3 号玩家查看规则为 [2,2]:
首先查看 2 号箱子,成功找到自己的 p_2 = 3 号装备
不再继续寻找
4 号玩家查看规则为 [2,0]:
首先查看 2 号箱子,找到编号为 p_2 = 3 号装备
随后查看 (p_2 + 0 - 1) \mod n + 1 = 3 号箱子,成功找到编号为 p_3 = 4 号装备
在这个排列下,样例输出成功找到了所有玩家的装备,记作通过一组数据;但此输出无法通过所有测试数据
能够通过 25\% 的测试数据的输出,被视为正确答案