Ueli 和 Vreni 正在玩一个游戏。游戏的棋盘是一棵有 $N$ 个顶点的树,所有顶点初始时均为蓝色。他们轮流进行操作,Ueli 先手。在每一回合中,玩家必须选择一个蓝色顶点,以及该顶点任意数量(可以为零或全部)的蓝色邻居,并将这些顶点全部染成红色。如果在某位玩家的回合开始时,所有顶点都已经是红色,则该玩家输掉游戏,另一位玩家获胜。
在下方的示例游戏中,Ueli 在第一回合将顶点 3 染红。接着,Vreni 在她的回合选择了顶点 2,并将它及其邻居(顶点 1)染红。由于此时所有顶点均为红色,Ueli 输掉游戏,Vreni 获胜。
Ueli 和 Vreni 注意到,由于 Ueli 先手,他更容易赢得这个游戏。因此,他们采取了以下流程:首先,Ueli 选择一个整数 $N$。然后,Vreni 选择一棵有 $N$ 个顶点的树。接着,他们开始按照上述规则进行游戏,由 Ueli 先手。
Vreni 希望通过选择树来克服后手的劣势。你能证明 Vreni 如何在这种设置下赢得游戏吗?
输入格式
这是一个交互式问题。请确保你已阅读 FAQ 中关于交互式问题的相关信息。
程序首先需要读取一行包含一个整数 $T$,表示测试用例的数量。随后处理 $T$ 个测试用例。
对于每个测试用例,程序首先需要读取一行包含一个整数 $N$,即 Ueli 选择的顶点数量。然后,你的程序必须输出 $N - 1$ 行,描述 Vreni 应选择的树的边。树的节点编号为 $1$ 到 $N$。每一行必须表示树的一条不同边,包含两个 $1$ 到 $N$ 之间的整数:即该边连接的两个顶点。这些边必须构成一棵树。行内的两个整数顺序不限,行与行之间的顺序也不限。
之后,程序需要读取一行包含一个整数 $M$,表示你需要在这棵树上进行的对局数量。这些对局是独立进行的;换句话说,每局游戏开始时,树的所有顶点均为蓝色。
对于每一局游戏,你需要处理若干次交换,直到游戏结束。每次交换由每位玩家各进行一回合操作组成。
对于每次交换,程序首先需要读取两行描述 Ueli 的回合。第一行包含一个整数 $K$,表示要染红的蓝色顶点数量。第二行包含 $K$ 个不同的整数 $A_1, A_2, \dots, A_K$,描述要染红的蓝色顶点。$K$ 至少为 1,且每个 $A_i$ 都在 $1$ 到 $N$ 之间。顶点 $A_2, A_3, \dots, A_K$ 均为顶点 $A_1$ 的邻居。
之后,你的程序必须以相同的格式输出 Vreni 的回合选择:第一行输出要染红的蓝色顶点数量,第二行输出这些顶点的编号,顺序要求除第一个顶点外,其余顶点均为第一个顶点的邻居。
如果 Vreni 操作后所有顶点均为红色,则意味着 Vreni 获胜,该局游戏结束。如果还有后续对局,则立即开始下一局。如果这是该测试用例的最后一局,则立即开始下一个测试用例(如果有)。如果这是最后一个测试用例,裁判将不再发送任何输入,你的程序也不得再进行任何输出。
另一方面,如果 Ueli 操作后所有顶点均为红色,则意味着 Vreni 输了,因此你的程序未通过该测试用例。在这种情况下,裁判将输出一个整数 $-1$,且不会再进行任何输出,也不会处理后续的对局或测试用例。
如果裁判收到格式错误或无效的行(例如输出的整数数量不符、整数超出范围、输出的边不能构成树、尝试染红一个已经是红色的顶点,或尝试染红一个不是第一个被染红顶点的邻居),裁判也会输出一个整数 $-1$,且不会再进行任何输出。如果你的程序在收到 $-1$ 后继续等待裁判,程序将超时,导致 Time Limit Exceeded 错误。请注意,你有责任让程序及时退出以接收 Wrong Answer 判决,而不是 Time Limit Exceeded。通常情况下,如果超出内存限制或程序出现运行时错误,你将收到相应的判决。
裁判是确定性的。换句话说,如果你进行两次输出相同数字的尝试,你将从裁判那里得到相同的输入。当然,裁判在同一棵树的不同对局中可能会做出不同的选择。
数据范围
时间限制:60 秒。 内存限制:1 GB。 $1 \le M \le 50$。
测试集 1(可见判决) $T = 1$。 $N = 30$。
测试集 2(隐藏判决) $1 \le T \le 10$。 $31 \le N \le 40$。 没有两个测试用例使用相同的 $N$ 值。
样例
输入 1
2 3 1 3 4 2 3 2 1 3 2 2 3
输出 1
1 2 1 3 2 1 2 1 4 1 1
说明
请注意,样例交互并不满足任一测试集的数据范围,因为其 $N$ 值过小。它仅用于阐明输入和输出格式。
以下是 Case #2, Game #1 开始时及每回合后的示意图:
以下是 Case #2, Game #2 开始时及每回合后的示意图: