「RdOI R3」毒水
题目描述
**这是一道 IO 交互题。**
现在你面前有 $n$ 瓶水,从 $1\sim n$ 编号,其中有 $1$ 瓶水有毒,你可以用一些小白鼠来进行判断。
但是你找的小白鼠中**有且仅有**一只**变异鼠**,**如果它喝的水中有毒水,那么它不会死亡。否则它会在 $59$ 秒内死亡。其它小白鼠如果喝了毒水将在 $59$ 秒内死亡,否则不会死亡**。
你需要在一分钟内找出这瓶毒水,因为测试已经花了 $59$ 秒,所以你的代码只能运行 $1$ 秒。
### 交互方式
首先你需要从标准输入读取两个整数 $n$,$maxk$,表示水的数量,以及你最多能找到的小白鼠个数。
若你需要 $k$ 只小白鼠,你需要向标准输出打印 $k+1$ 行,除了最后一行,每一行的格式为:`1 m B1 B2 ... Bm`,表示你找到一只小白鼠并让它喝 $B_1$ 号,$B_2$ 号,$\cdots$,$B_m$ 号这 $m$ 瓶中的水。你需要在最后写上一行:`2`,随后清空缓冲区,表示你不需要更多的小白鼠了。
下面是一些语言的刷新缓冲区操作:
- C++:`fflush(stdout)` 或 `cout.flush()`。
- C: `fflush(stdout)`。
- Java: `System.out.flush()`。
- Python: `stdout.flush()`。
- Pascal: `flush(output)`。
- 其他语言:请参考对应语言的帮助文档。
当然,如果 $k>maxk$,交互库会返回 `WA`、`RE`、`UKE` 或 `TLE`,同时该测试点不得分。
然后你需要从标准输入读取 $k$ 个整数 $R_1,R_2,\cdots,R_k;R_i\in\{0,1\}$。若 $R_i=0$ 代表第 $i$ 号小白鼠已死亡,否则代表第 $i$ 号小白鼠仍存活。
最后你需要从标准输出打印一个整数,表示毒水的编号。
输入输出格式
输入格式
见**交互方式**。
输出格式
见**交互方式**。
输入输出样例
输入样例 #1
4 12
1 0 1 1 1 1 1 1 1 0 1 1
输出样例 #1
1 1 1
1 1 2
1 1 3
1 1 4
1 1 1
1 1 2
1 1 3
1 1 4
1 1 1
1 1 2
1 1 3
1 1 4
2
2
说明
### 样例说明
毒水的编号为 $2$,且第 $2$ 次和第 $10$ 次均为让小白鼠喝下 $2$ 号毒水,故这两次操作返回的结果为 $0$。其他操作由于让小白鼠喝的不是毒水,返回的结果为 $1$。
**样例仅为理解交互方式使用,可能不符合逻辑。**
---
### 数据范围
**本题采用捆绑测试。**
**注意:本题不存在一个 subtask 包含其他所有 subtask**。
| subtask | 分值 | $n$ | $maxk\ge$ |
| ------- | ---- | --------------- | ------- |
| $1$ | $1$ | $=1$ | $0$ |
| $2$ | $9$ | $\le 1000$ | $3000$ |
| $3$ | $20$ | $\le 1000$ | $30$ |
| $4$ | $30$ | $8\le n \le 16$ | $7$ |
| $5$ | $40$ | $\le 1000$ | $15$ |
---
### 注意
只有你向交互器发送 $2$ 操作时,交互器才会将你先前的 $1$ 操作的答案告诉你。也就是说,你不能在执行一次 $1$ 操作后立刻得到这次操作的返回结果。