这是一道交互题。
注意:对于 C++ 语言,你与评测机交互的时间大约需要 2s。
小 M 有一个隐藏的 的排列 ,初始你不知道这个排列,但是你可以通过向评测机提问还原它:
- :返回 ,其中 是按位与运算。
- :返回 ,其中 是按位或运算。
你需要通过不超过 次提问还原这个排列。
交互格式
我们约定「评测机输出」即为你的输入。
首先,评测机输出两个整数,用空格隔开,分别代表这个测试点的 和 。
然后你可以进行若干次提问,每次提问如下:
- 你输出 或 ,代表一次询问。你需要保证 。
- 如果你已超出询问次数 ,评测机输出 ,此时你应当立即终止你的程序,否则会发生不可预料的错误。
- 否则,评测机输出你的询问的对应答案。
当你确定答案时,可以以此格式报告答案:。
注意:你在输出(询问或报告答案)后必须换行并刷新缓冲区。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout);
- 对于 C++:
std::cout << std::flush(特别地,如果输出换行使用了 std::endl,会自动刷新缓冲区);
- 对于 Java:
System.out.flush();
- 对于 Python:
stdout.flush();
- 对于 Pascal:
flush(output);
- 对于其他语言,请自行查阅对应语言的帮助文档。
你可参考样例以明确交互格式。另外,可以查看附件的 implementation_example.cpp 查看示例实现。注意:示例实现无法获得分数。