「TAOI-1」Antipathy World

题目背景

> 簡単なことも解らないわ \ > あたしって何だっけ \ > それすら夜の手に絆されて \ > 愛のように 消える 消える \ > さようならも言えぬ儘泣いた フォニイ フォニイ フォニイ \ > 嘘に絡まっているあたしはフォニイ \ > **ANTIPATHY WORLD**

题目描述

**这是一道 IO 交互题。** 可不有 $n$ 朵花,每朵花有一个正整数美丽度。 她发现,有一朵花的美丽度不小于其它任何一朵花的美丽度的两倍。 你想知道这朵花是哪一朵,于是你可以进行至多 $k$ 次询问,每次询问你给出两个正整数 $i,j \in [1, n]$,可不会告诉你第 $i$ 朵和第 $j$ 朵花的美丽度之差的绝对值。 你想运用这些询问的答案,得到最美丽的花是第几朵。 ### 交互格式 **本题有多组数据**。 第一行交互库给出一个整数 $T$,表示数据组数。 对于每组数据,第一行输入两个正整数 $n,k$。 对于你的每组询问,你输出 `? i j`,交互库会返回一个非负整数,表示第 $i$ 朵和第 $j$ 朵花的美丽度之差。 如果你已经得到答案,输出 `! i` 代表你得到第 $i$ 朵花为最美丽的花。在此之后你应该开始对下一组数据的处理。 每次你输出之后,请**刷新缓冲区**。 你可以使用如下语句来清空缓冲区: - 对于 C/C++:`fflush(stdout)`; - 对于 C++:`std::cout << std::flush`; - 对于 Java:`System.out.flush()`; - 对于 Python:`stdout.flush()`; - 对于 Pascal:`flush(output)`; - 对于其他语言,请自行查阅对应语言的帮助文档。 特别的,对于 C++ 语言,在输出换行时如果你使用 `std::endl` 而不是 `'\n'`,也可以自动刷新缓冲区。

输入输出格式

输入格式


见「交互格式」。

输出格式


见「交互格式」。

输入输出样例

输入样例 #1

1
3 114514

3

2

1

输出样例 #1



? 1 2

? 1 3

? 2 3

! 1

说明

样例中给出了一种可能的交互方式,其中花的美丽度为 $\{4,1,2\}$。 --- **本题采用捆绑测试**。 - Subtask 1(20 points):$k=\dfrac{n(n-1)}{2}$,$n \le 200$。 - Subtask 2(30 points):$k=n$。 - Subtask 3(50 points):$k=\left\lfloor\dfrac{n}{2}\right\rfloor+2$。 对于所有测试数据,设所有花的美丽度为 $a_i$,$1 \le T \le 25$,$3 \le n \le 5 \times 10^4$,$1 \le a_i \le 10^8$。