『JROI-7』T2nz.
题目背景
**这是一道交互题。**
题目描述
小 X 陷入了一个奇怪的梦。在梦境里,她在和小 Q 下一种奇怪的棋。
这是一个 $2^{2n}\times 2n$ 的棋盘,小 X 执黑先行,小 Q 执白后行。
每次操作,需要**在当前未满的第一行内**,任意选择一格下棋。一格内只能有一个棋子。
下满之后,共有 $2^{2n}$ 行棋子,小 X 的得分为本质不同的行数。
小 X 想最大化她的得分,但小 Q 想最小化小 X 的得分。
你的任务是,扮演小 X 或小 Q,最大化或最小化得分。
**若你是小 X,在满足最大化得分 $ans$ 的同时,你也要最大化前 $ans$ 行中本质不同的行数**。
------------
### 交互格式
你要先从标准输入读入一行两个整数 $T,tp$,表示数据组数和你扮演的角色。保证 $tp\in\{0,1\}$。若 $tp=0$,表示你扮演小 Q(后手);若 $tp=1$,表示你扮演小 X(先手)。
接下来每一组数据,你要先从标准输入读入一行一个正整数 $n$,含义见题目描述。
接下来会进行 $2^{2n}\times n$ 次交互。
在每次交互中:
- 若 $tp=0$,你要先从标准输入读入一行一个正整数 $x$,表示小 X 下了黑棋在当前未满的第一行的第 $x$ 列,接下来你要向标准输出输出一个正整数 $y$,表示你下了白棋在当前未满的第一行的第 $y$ 列;
- 若 $tp=1$,你要先向标准输出输出一个正整数 $x$,表示你下了黑棋在当前未满的第一行的第 $x$ 列,接下来你要从标准输入读入一行一个正整数 $y$ 表示小 Q 下了白棋在当前未满的第一行的第 $y$ 列。
你的输出都要**换行并清空缓存区**。
你需要保证你下棋的位置不能已有棋子。同时,交互库也会保证其下棋的位置不会已有棋子。
输入输出格式
输入格式
见「交互格式」。
输出格式
见「交互格式」。
输入输出样例
输入样例 #1
1 1
1
2
1
2
1
输出样例 #1
1
2
1
2
说明
**【样例解释】**
读入的 $n=1$,因此棋盘的大小是 $4\times 2$ 的。两人模拟如[动图](https://i.ibb.co/ChCxHQH/e.gif)所示。最终结果如下图所示:
![](https://cdn.luogu.com.cn/upload/image_hosting/u2goi90a.png)
可以观察发现,最终本质不同的行数为 $2$。容易发现,这是小 X 能最大化的得分。同时,前 $2$ 行中本质不同行数为 $2$,显然无法达到更大的值。
------------
**【数据范围与规模】**
| 测试点编号 | $n \le$ | $tp=$ |
|:-:|:-:|:-:|
| $1$ | $3$ | $0$ |
| $2\sim 3$ | $7$ | $0$ |
| $4$ | $3$ | $1$ |
| $5$ | $4$ | $1$ |
| $6$ | $5$ | $1$ |
| $7 \sim 8$ | $6$ | $1$ |
| $9 \sim 10$ | $7$ | $1$ |
对于所有的数据,保证 $1 \le n \le 7$,$1 \le T \le 3$,$tp\in\{0,1\}$。
------------
**【提示】**
- 您可以使用如下语句来清空缓冲区:
- 对于 C/C++:`fflush(stdout)`;
- 对于 C++:`std::cout << std::flush`;
- 对于 Java:`System.out.flush()`;
- 对于 Python:`stdout.flush()`;
- 对于 Pascal:`flush(output)`;
- 对于其他语言,请自行查阅对应语言的帮助文档。
- 特别的,对于 C++ 语言,在输出换行时使用 `std::endl` 而不是 `'\n'`,也可以自动刷新缓冲区。
- 我们保证交互库耗时在 $1.5\text{s}$ 内,空间消耗可以忽略不计。