3542. 神奇的魔术

单点时限: 2.0 sec

内存限制: 256 MB

这是一个交互题。

ultmaster 男神给小迷妹们变了个神奇的魔术,ultmaster 给了 $2^n$ 个小迷妹们 $2^n$ 张标号分别为 $1$ 到 $2^n$ 的扑克牌。一人一张,每人拥有的牌都是不同的。我们假设她们拥有的牌分别为 $a_1,a_2,\ldots,a_{2^n}$,那么显然这是一个 $[2^n]$ 的排列。

每一轮 ultmaster 男神猜每一个小迷妹手上牌的值(必须在 $[1,2^n]$ 内)。小迷妹们会告诉 ultmaster 男神一共猜对了几张牌。机智的 ultmaster 男神保证自己至多 $1000$ 轮就可以猜出所有的牌,你能做到么?

P.S. 初始扑克牌顺序固定后不会随着 ultmaster 男神的猜的方式再有改变。

交互流程

你的程序首先从交互器中读入一个整数 $n$ $(1 \leq n \leq 7)$。

随后你需要猜 $2^n$ 个整数,这些整数必须按照事先规定的顺序输出,分别为 $a_1^,a_2^,\ldots,a_{2^n}^$ ($1 \le a_i^ \le 2^n$),可以存在 $a_i^ = a_j^ (i \ne j)$。随后交互器会告诉你你的程序猜对了几个,也就是 $|{i | a_i = a_i^*}|$。

如果交互器返回了 $2^n$,那么就意味着你全部猜对啦,你可以退出程序。如果返回 $-1$,意味着你超出了次数上限,你也应该退出程序(不过你不退也不要紧,反正你过不了这个题)。

从交互器读入、输出使用标准输入输出流:stdin, stdout。请注意输出的缓冲区问题:在 C 语言中,请使用 fflush(stdout);在 C++ 中,可以使用 endlflush,在 Python 中,可以使用 stdout.flush()。其他的语言就不再列举。

样例

Input
1

0

2
Output
1 2

2 1

28 人解决,59 人已尝试。

39 份提交通过,共有 465 份提交。

6.2 EMB 奖励。

创建: 2 年,6 月前.

修改: 10 月,2 周前.

最后提交: 6 月,2 周前.

来源: EOJ Monthly 2018.4