这是一个交互式问题。
Roman 在一个 $n \times m$ 的棋盘上藏了一枚车(rook)。你需要找到它的确切位置。你最多可以向 Roman 询问 4 次以下问题:“有多少个单元格 $(i, j)$ 满足 $X_1 \le i \le X_2$ 且 $Y_1 \le j \le Y_2$,处于隐藏车的攻击范围内?”车会攻击同一行或同一列的所有单元格,包括它所在的单元格。
第一行包含一个整数 $t$,表示测试用例的数量 ($1 \le t \le 15\,000$)。
每个测试用例的交互开始于两个整数 $n$ 和 $m$,表示棋盘的尺寸 ($3 \le n, m \le 15$)。
要向 Roman 提问,请输出 “? $X_1$ $Y_1$ $X_2$ $Y_2$” ($1 \le X_1 \le X_2 \le n, 1 \le Y_1 \le Y_2 \le m$)。之后,你将收到一个整数 $K$:表示在 $X_1 \le i \le X_2$ 且 $Y_1 \le j \le Y_2$ 的范围内,处于隐藏车攻击下的单元格数量。每个测试用例最多可以询问 4 次。
要报告答案,请输出 “! $X$ $Y$”,其中 $(X, Y)$ 是隐藏车所在的单元格。
在每次查询后,请务必输出换行符并刷新缓冲区。你可以使用以下命令:
- C++ 中使用
fflush(stdout)或cout.flush(); - Java 中使用
System.out.flush(); - Pascal 中使用
flush(output); - Python 中使用
stdout.flush();
对于其他语言,请参阅其文档。如果你未能执行此操作,将获得 “Idleness limit exceeded” 判决。
样例
输入格式 1
2 6 6 8 2 7 5 11 4
输出格式 1
? 1 1 3 6 ? 2 2 2 3 ! 2 3 ? 1 1 7 5 ? 1 1 1 4 ! 1 4