去年,一群讨厌的地鼠在我们的果园里安了家。我们试图通过开设一个迷你高尔夫球场来改变我们的工作,但地鼠们似乎也跟到了这里!我们再次需要弄清楚这里有多少只地鼠,但我们无法直接观察它们,因为它们既隐秘又昼伏夜出,而我们喜欢在晚上睡觉。我们只知道地鼠的数量在 $1$ 到 $M$ 之间(包含 $1$ 和 $M$)。
我们的迷你高尔夫球场以其 $18$ 个球洞上各有一个小型电子风车而闻名。第 $i$ 个风车有 $2 \le B_i \le 18$ 个叶片,叶片按顺时针方向编号为 $0$ 到 $B_i-1$。每天晚上睡觉前,我们会关闭风车并将每个风车设置为 $0$ 号叶片朝下,这对于风车在第二天正常充电非常重要。然而,我们注意到当我们醒来时,风车已经被扰动了。由于我们的迷你高尔夫球场处于无风地带,我们认为一定是那些淘气的地鼠干的!
我们知道每天晚上,所有的地鼠都会一只接一只地出现;每只地鼠独立且均匀随机地选择一个风车,并将其逆时针旋转一个叶片。例如,对于一个有 $3$ 个叶片且 $0$ 号叶片朝下的风车,第一只与它交互的地鼠会将其转动,使得 $1$ 号叶片朝下,接着下一只与该风车交互的地鼠会使朝下的叶片编号变为 $2$,然后是 $0$,再是 $1$,依此类推。
我们制定了一个计划。我们设计了风车,以便我们可以轻松更改叶片的数量(以调节球场的难度),现在我们将利用这一点!每天晚上睡觉前,我们可以在给定的限制范围内选择 $18$ 个风车中每个风车的叶片数量;我们不必在每个风车上使用相同数量的叶片,也不必每天都做出相同的选择。早上,我们将观察每个风车朝下的叶片编号。
我们有 $N$ 个晚上的时间来找出地鼠的数量 $G$。你能帮帮我们吗?
输入格式
这是一个交互式问题。请确保你已经阅读了 FAQ 中关于交互式问题的说明。
程序首先应读取一行,包含三个整数 $T$、$N$ 和 $M$,分别代表测试用例数量、每个测试用例允许的夜晚数以及地鼠的最大数量。
然后,你需要处理 $T$ 个测试用例。
在每个测试用例中,你的程序最多与裁判进行 $N+1$ 次交互。你可以进行最多 $N$ 次以下形式的交互:
- 你的程序输出一行,包含 $18$ 个 $2$ 到 $18$ 之间的整数;其中第 $i$ 个数代表你希望第 $i$ 个风车在当晚拥有的叶片数量。
- 裁判返回一行,包含 $18$ 个整数;其中第 $i$ 个数代表第二天早上第 $i$ 个风车朝下的叶片编号(在地鼠捣乱之后)。如果你发送了无效数据(例如超出范围的数字或格式错误的行),裁判将返回 $-1$。
每天晚上,对于每只地鼠,选择转动哪个风车是均匀(伪)随机的,并且独立于任何其他地鼠(包括其自身)在任何夜晚的任何其他选择。
在按照上述说明进行了 $0$ 到 $N$ 次交互后,你必须进行最后一次以下形式的交互:
- 你的程序输出一个整数:你对地鼠数量 $G$ 的猜测。
- 裁判返回一行,包含一个整数:如果你的答案正确,则返回 $1$;如果答案错误(或者你提供了格式错误的行),则返回 $-1$。
数据范围
$1 \le T \le 20$。 时间限制:每个测试集 $20$ 秒。 内存限制:$1\text{GB}$。
测试集 1(可见)
$N = 365$。 $M = 100$。
测试集 2(隐藏)
$N = 7$。 $M = 10^6$。
说明
在裁判向你的输入流发送 $-1$(因为数据无效或答案错误)后,它将不会发送任何其他输出。如果你的程序在收到 $-1$ 后继续等待裁判,程序将会超时,导致“超出时间限制”(Time Limit Exceeded)错误。请注意,你有责任让你的程序及时退出,以便接收到“答案错误”(Wrong Answer)判决,而不是“超出时间限制”错误。通常情况下,如果超过内存限制或程序出现运行时错误,你将收到相应的判决。
样例
此交互对应测试集 1。假设裁判决定地鼠数量为 $10$。
t, n, m = readline_int_list() // 读取 20 到 t, 365 到 n, 100 到 m // 选择第 1 天的叶片数量 printline 2 2 2 2 18 3 3 3 3 3 3 4 4 4 4 5 2 2 to stdout flush stdout // 读取 0 0 0 0 0 0 1 2 1 0 1 2 0 0 0 0 1 0 到 res res = readline_int_list() // 选择第 2 天的叶片数量 printline 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 to stdout flush stdout // 读取 0 1 1 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 到 res res = readline_int_list() printline 8 to stdout // 我们做出了错误的猜测,尽管我们本可以 flush stdout // 再调查多达 363 个晚上 verdict = readline_int() // 读取 -1 到 verdict(裁判判定我们的 // 解决方案不正确) exit // 退出以避免模糊的 TLE 错误
请注意,即使猜测与我们从裁判那里收到的信息一致,我们仍然是错误的,因为我们没有找到正确的值。