加油,能量战士!每个人都喜欢这支由五名高中生超级英雄组成的队伍,他们分别佩戴字母 A、B、C、D 和 E。当他们并排站立对抗邪恶怪物时,他们会以 120 种可能的不同从左到右的顺序排列,从而获得各种不同的战术超能力。他们甚至比“忍者神龟”还要受欢迎!
该节目的评论家声称,该团队之所以有这种排列噱头,只是为了让节目所有者能够销售 120 套不同的 5 个动作人偶,每一套都以不同的从左到右的顺序展示团队,并粘在底座上,因此该套装无法重新排列。作为一名狂热的能量战士粉丝,你收集了其中的 119 套,但你不记得缺少哪一套了。你的 119 套人偶在架子上水平排列,总共有 $119 \times 5 = 595$ 个动作人偶按从左到右的顺序排列。你不记得这些套装是如何排列的,但你知道套装的排列方式是从所有可能的排列中均匀随机选择的,并且对于每个测试用例都是独立的。
你不想浪费时间去弄清楚缺少哪一套,所以你计划查看架子上最多 $F$ 个人偶上的字母。例如,你可以选择查看从左边数第八个人偶上的字母,这将是左起第二套中的第三个人偶。查看一个人偶时,你只能获得那一个人偶上的字母;字母很难看清,而且如果不看字母,不同的团队成员看起来非常相似!
在检查了最多 $F$ 个人偶后,你必须找出缺少哪一套,这样你就可以完成你的收藏并准备好面对任何可能的邪恶威胁!
输入格式
这是一个交互式问题。请确保你已阅读我们常见问题解答(FAQ)中关于交互式问题的部分。
最初,你的程序应该读取一行,包含两个整数 $T$(测试用例的数量)和 $F$(每个测试用例允许检查的人偶数量)。然后,你需要处理 $T$ 个测试用例。
在每个测试用例中,缺失的套装是从所有可能的套装中均匀随机选择的,剩余套装的顺序也是从所有可能的顺序中均匀随机选择的。每一个选择都独立于所有其他选择以及你的输入。
在每个测试用例中,你的程序将与我们的裁判进行最多 $F + 1$ 次交互。你可以进行最多 $F$ 次以下形式的交互:
- 你的程序输出一行,包含一个 $1$ 到 $595$ 之间的整数(含边界),表示你希望查看哪一个人偶(按架子上从左到右的顺序)。作为进一步的示例,$589$ 将代表右起第二套中的第四个人偶。
- 裁判回复一行,包含一个大写字母 A、B、C、D 或 E,表示该人偶上的字母。如果你发送了无效数据(例如,超出范围的数字或格式错误的行),裁判将回复一行,包含单个大写字母 N。
然后,在你进行了想要进行的 $F$ 次交互后,你必须再进行一次以下形式的交互:
- 你的程序输出一行,包含一个由五个大写字母组成的字符串:对应于缺失套装的排列(例如,CADBE)。
- 裁判回复一行,包含一个大写字母:如果你的答案正确,则为 Y;如果答案不正确(或者你提供了格式错误的行),则为 N。如果你收到 Y,你应该开始下一个测试用例,或者如果没有更多测试用例,则停止发送输入。
在裁判向你的输入流发送 N(因为数据无效或答案不正确)后,它将不会发送任何其他输出。如果你的程序在收到 N 后继续等待裁判,你的程序将超时,导致“时间限制超限”(Time Limit Exceeded)错误。请注意,你有责任让你的程序及时退出以接收“答案错误”(Wrong Answer)判决,而不是“时间限制超限”错误。通常,如果超过内存限制或程序出现运行时错误,你将收到相应的判决。
数据范围
$1 \le T \le 50$。 时间限制:每个测试集 40 秒。 内存限制:1GB。 缺失的套装以及剩余套装的顺序是均匀且独立随机选择的。
测试集 1(可见)
$F = 475$。
测试集 2(隐藏)
$F = 150$。
样例
此交互对应于测试集 1。
t, f = readline_int_list() // 读取 50 到 t,475 到 f
printline 10 to stdout // 查看左起第二套中的最后一个
// 人偶
flush stdout
n = readline_string() // 读取 B 到 n。哦,团队成员 B!他们可能
// 没有 A 的领导能力,也没有 C 的技术
// 技巧,但他们用聪明的俏皮话娱乐团队!
printline 11 to stdout // 查看左起第三套中的第一个
// 人偶
flush stdout
n = readline_string() // 读取 B 到 n。注意 B 在第三套的开头,
// 而他们之前在第二套的末尾。
printline 14 to stdout // 查看左起第三套中的第四个
// 人偶
flush stdout
n = readline_string() // 读取 D 到 n。沉默而忧郁,团队成员 D
// 依然奋力战斗以保护他们的朋友……
// 和世界!
printline ABCDE to stdout // 我们愚蠢地做了一个盲目的猜测,尽管我们
// 最多还可以查看 472 个人偶。
flush stdout
verdict = readline_string() // 读取 N 到 verdict(裁判判定我们的
// 解决方案不正确)
exit // 退出以避免模棱两可的 TLE 错误