“如果你想让一道数组题变得更难,就把它放到树上解决。如果你想让一道树题变得更难,就把它放到仙人掌图上解决。” —— 业界共识
NEERC 在往年曾出现过许多关于仙人掌图的问题——即每条边至多属于一个简单环的连通无向图。直观地说,仙人掌图是树的一种推广,允许存在一些环。下图展示了一个来自 NEERC 2007 问题的仙人掌图示例。
你正在与 Chloe 在一张仙人掌图上玩游戏。给定一张仙人掌图,Chloe 秘密地从中选取了一个顶点 $v$,你的目标是找到它。你最多可以进行 10 次猜测。如果你猜的顶点是 $v$,你就赢了。否则,如果你猜的是另一个顶点 $u$,Chloe 会帮助你,并告诉你一个与 $u$ 相邻的顶点 $w$,使得从 $w$ 到 $v$ 的距离严格小于从 $u$ 到 $v$ 的距离(此处距离定义为两点间最短路径上的边数)。
交互
首先,测试系统会写入一行,包含两个整数 $n$ 和 $m$ ($1 \le n \le 500; 0 \le m \le 500$)。其中 $n$ 是图中的顶点数,顶点编号为 $1$ 到 $n$。图的边由一组边不相交的路径表示,$m$ 是这些路径的数量。接下来的 $m$ 行,每行包含图中的一条路径。路径以一个整数 $k_i$ ($2 \le k_i \le 500$) 开头,后跟 $k_i$ 个 $1$ 到 $n$ 之间的整数,代表路径上的顶点。路径中相邻的顶点各不相同。路径可以多次经过同一个顶点,但整个输入中每条边恰好被遍历一次。输入中的图是一张仙人掌图。
为了证明你的程序能在最多 10 次查询内找到秘密顶点,你需要对 $n$ 个顶点分别进行测试。每次测试系统在与你的程序交互前都会预先选定一个顶点。你的程序通过输出包含单个整数 $u$ ($1 \le u \le n$) 的行来进行猜测。
测试系统会通过写入以下两种响应之一来回复:
- “FOUND” —— 表示你的猜测正确。之后,你的程序应继续处理下一个测试用例,或者如果已经猜出了 $n$ 个顶点,则终止程序。
- “GO w” —— 表示你的猜测不正确,但现在你知道从顶点 $w$ 到秘密顶点的距离小于从 $u$ 到秘密顶点的距离。保证顶点 $u$ 和 $w$ 是相邻的。
每次猜测后,请务必刷新输出!
样例
输入格式 1
5 2 5 1 2 3 4 5 2 1 3
输出格式 1
3 FOUND 3 GO 4 4 FOUND 3 GO 2 2 FOUND 3 GO 1 1 FOUND 3 GO 4 4 GO 5 5 FOUND
说明
样例中的空行仅为清晰起见而添加,在实际交互过程中并不存在。