有两个玩家在一个拥有 100 个顶点的完全无向图上进行游戏。初始时,所有 $\frac{100 \times 99}{2} = 4950$ 条边均未染色。玩家轮流为边染色。先手玩家先行,每回合选择任意 30 条未染色的边(如果剩余未染色边少于 30 条,则选择所有剩余边)并将它们染成黑色。后手玩家每回合选择任意一条未染色的边并将其染成白色。当所有边都被染色后,游戏结束。
如果后手玩家能指出一个仅由白色边组成的哈密顿回路,则后手玩家获胜,否则先手玩家获胜。哈密顿回路是一个恰好经过每个顶点一次的简单回路。
在本题中,你需要作为后手玩家进行游戏。此外,你已经知道了先手玩家的策略:他们将从所有剩余边中均匀随机地选择 30 条边。作为后手玩家,你能在 100 局游戏中至少赢得 95 局吗?
交互
首先,你的程序应读取三个整数 $n, k$ 和 $g$:图的顶点数、先手玩家每回合选择的边数,以及要进行的局数。在所有情况下(样例除外),$n = 100, k = 30, g = 100$。
然后,你的程序应进行恰好 $g$ 局游戏,并在最后一局结束后优雅地结束运行。
游戏过程如下:如果至少还有一条未染色的边,且轮到先手玩家,你的程序应读取先手玩家的移动。它以先手染黑的边数 $m$ 开头,随后是 $m$ 对整数,表示被染成黑色的边所连接的顶点编号。保证先手玩家将按照题目描述进行游戏:除非剩余未染色边少于 $k$ 条,否则 $m$ 总是等于 $k$;若少于 $k$ 条,则 $m$ 等于剩余未染色边的数量。边将从所有未染色边中均匀随机地选择。
如果至少还有一条未染色的边,且轮到后手玩家,你的程序应输出后手玩家的移动,即两个整数,表示要染成白色的边所连接的顶点编号。顶点编号为 $1$ 到 $n$ 之间的整数。你输出的边此时必须是未染色的。请记住在打印移动后刷新标准输出。
如果没有更多的未染色边,你的程序应打印它构建的哈密顿回路,表示为 $1$ 到 $n$ 的一个排列,即回路中顶点的顺序。如果你的程序在这一局中认输,则应输出单个数字 -1 而不是哈密顿回路。注意,在此之前它必须完成该局游戏。即使实际上存在由白色边组成的哈密顿回路,你也允许认输。同样,请记住在打印回路或 -1 后刷新标准输出。
如果你的程序在每个非样例测试点中至少 100 局里有 95 局构建出哈密顿回路,并且在样例测试点中进行任何合法的游戏(注意,如果你决定在样例中输出哈密顿回路,它必须是有效的),你的解法将被接受。本题共有 20 个非样例测试点。
样例
输入 1
6 1 2 1 4 2 1 3 1 1 4 1 1 6 2 1 6 4 1 6 1 1 6 5 1 2 1 1 3 6 1 2 5 1 4 6 1 5 1 1 1 4 1 2 6 1 2 4 1 5 3
输出 1
5 2 5 4 6 3 4 3 3 2 5 1 5 3 -1 1 2 2 3 3 4 5 4 5 6 1 6 1 3 1 2 3 4 5 6