创新计算质量控制(ICQC)开发了一种突破性的新机器,用于执行质量控制。得益于其新颖的深度智能技术,ICQC 质量控制(QC)机器可以自动且以 100% 的准确率检测任何现有机器中的制造错误,无论是咖啡机、星际飞船还是量子计算机。
ICQC 目前正在建立工厂来生产这些 QC 机器。像任何其他制造过程一样,生产出的机器中有一部分会出现故障,需要被发现并剔除。幸运的是,ICQC 刚刚推出了用于检测故障机器的产品!
显然,ICQC 不应该简单地使用 QC 机器来检测自身,因为故障机器可能会错误地将自己归类为工作正常。相反,ICQC 将把每天生产的每批 $n$ 台机器放在一起,让它们在夜间互相测试。特别地,在夜间的每个小时,每台 $n$ 台 QC 机器都可以对其他 QC 机器中的一台进行检查,并同时被另一台 QC 机器检查。
如果执行检查的机器是正常的,它将正确报告被测机器是正常还是故障;但如果执行检查的机器本身有故障,它可能会报告任何结果。如果机器 A 被多次用于测试机器 B,它每次都会返回相同的结果,即使机器 A 本身有故障。确切的测试计划不需要提前固定,因此在夜间第二小时选择哪些机器检查哪些机器可以基于第一小时的测试结果,依此类推。
ICQC 100% 确信每批 $n$ 台 QC 机器中严格超过一半的机器工作正常,但夜晚只有 12 小时长,因此只有时间进行少量的测试轮次。你能帮助 ICQC 确定哪些 QC 机器出现了故障吗?
例如,考虑下面的样例交互 1。在第四小时之后,每台机器都测试了其他所有机器。对于机器 1,只有另一台机器声称它有故障,如果它真的有故障,那么至少会有 3 台其他机器声称这一点。对于机器 4,只有另一台机器声称它工作正常,这意味着机器 2 一定有故障,因为假设超过一半的机器是正常工作的。注意,尽管机器 4 有故障,但它在这些特定的测试轮次中恰好产生了正确的回应。
交互
输入的第一行包含一个整数 $b$ ($1 \le b \le 500$),表示后续的批次数。每批都是独立的。你需要以交互方式处理每一批,这意味着你收到的输入将取决于你程序的先前输出。
每批输入的第一行包含一个整数 $n$ ($1 \le n \le 100$),表示该批次中 QC 机器的数量。交互随后按轮次进行。在每一轮中,你的程序可以通过写入一行格式为 “test $x_1$ $x_2$ $\dots$ $x_n$” 的内容来安排下一小时的测试,表示每台机器 $i$ 应该对机器 $x_i$ 进行测试。如果 $x_i = 0$,则机器 $i$ 在该轮中处于空闲状态,不执行任何测试。序列中的所有正数必须互不相同。
在写入此行后,将从输入中读取一个结果。结果是一行包含长度为 $n$ 的字符串,如果机器 $i$ 说机器 $x_i$ 工作正常,则在位置 $i$ 处有一个 ‘1’;如果机器 $i$ 说机器 $x_i$ 有故障,则为 ‘0’;如果机器 $i$ 在该轮中处于空闲状态,则为 ‘-’(短横线)。
当你的程序确定了哪些机器有故障,且不超过 12 轮测试后,它必须写入一行格式为 “answer $S$” 的内容,其中 $S$ 是一个长度为 $n$ 的二进制字符串,如果机器 $i$ 工作正常,则在位置 $i$ 处有一个 ‘1’,如果它有故障,则为 ‘0’。
在写入答案行后,你的程序应通过读取下一批的 $n$ 来开始处理下一批。当所有 $b$ 批次都处理完毕后,交互结束,你的程序应该退出。
说明
- 交互式评测说明:评估是非对抗性的,这意味着每台机器测试另一台机器的结果是预先选定的,而不是根据你的查询实时生成的。
- 写入后不要忘记刷新输出缓冲区。详情请参阅评测说明附录。
- 你将获得一个用于本地测试的命令行工具,以及对应于样例交互的输入文件。该工具的顶部有解释其用法的注释。
样例
样例 1
1 5 test 5 4 2 1 3 11011 test 4 5 1 3 2 00110 test 2 3 4 5 1 01011 test 3 1 5 2 4 10100 answer 10101
样例 2
2 4 test 2 3 4 1 1111 answer 1111 7 test 2 3 4 5 6 7 1 0001100 test 0 0 0 0 2 4 0 ----11- answer 0101110