这是一个交互式问题。
科学考察船的海洋探险进行得很顺利,但在某一时刻,科学家们进入了一个与海岸失去联系的区域。第一个问题是他们无法将研究数据传回大陆。不幸的是,他们将无法继续前行,必须返回。但第二个问题是,由于失去了联系,没有可靠的方法可以返回!留在岸上的科学家团队已经发送了一架无人机,它将寻找船只的位置,然后引导它返回海岸。
被研究的海洋区域表示为一个 $n \times n$ 的网格。船只在水平或垂直方向上占据 $k > 1$ 个连续的单元格。网格的行从上到下从 $1$ 到 $n$ 编号,列从左到右从 $1$ 到 $n$ 编号。通过一次询问,无人机可以选择一个单元格 $(r, c)$。如果船只在第 $r$ 行或第 $c$ 列中至少占有一个单元格,则搜索成功结束。否则,在询问之后,船只可能会保持在原位,或者根据其朝向沿其轴线向任一方向移动一个单元格。船只不能离开被研究的海洋区域;船只的所有单元格必须保持在网格内。
图 1 展示了一个 $n = 5$,$k = 2$,且检查无人机位置 $(r, c) = (1, 2)$ 的例子。箭头表示在询问后船只可以移动到的位置。
图 1. 移动示例
目标是通过击中一个必定包含船只至少一个单元格的行或列,在最少可能的操作次数内找到船只。
输入格式
输入数据的第一行包含两个整数 $n$ 和 $k$($3 \le n \le 10$,$2 \le k \le n$),分别表示网格的大小和船只的长度。
交互协议
要进行一次询问,请输出两个整数 $r$ 和 $c$($1 \le r, c \le n$)。询问的响应将写入标准输入流:如果尚未找到船只,你将收到数字 0;如果已找到船只,你将收到数字 1。一旦你读取到数字 1,程序必须立即终止。如果你读取到数字 0,你可以进行新的询问。
请注意,交互器是自适应的(adaptive),船只的移动不一定有固定的策略。
如果你的询问次数超过了保证找到船只所需的最少次数,或者询问的坐标超出了研究的海洋区域,你的程序将被判定为 Wrong Answer,且对该询问的响应将为数字 -1。在读取到响应 -1 后,程序必须立即终止。如果你的解决方案在找到船只后没有立即终止,或者在找到船只之前就终止了,或者在读取到 -1 后继续执行,它将被视为不正确,且评测结果可能是未定义的。
在每次询问后,请不要忘记输出换行符并刷新标准输出流的缓冲区。你可以使用以下函数:
- C++ 中的
fflush(stdout)或std::cout.flush(); - Java 中的
System.out.flush(); - Pascal 中的
flush(output); - Python 中的
stdout.flush(); - 其他语言请参阅相关文档。
样例
输入样例 1
3 2 1
输出样例 1
2 2
说明
在样例中,我们对单元格 $(2, 2)$ 进行了一次询问,这使我们无论船只位于何处,都能在一次移动中找到它。作为对这次移动的响应,程序读取到了数字 1,随后程序终止,因为已经找到了船只。