{"raw_statement":[{"iden":"background","content":"写不出优美的文字，索性不放背景了。【背景待填充】\n\n> 由于这只是个 C，出题人打算良心点，于是加了几个 $0$（指交互次数）（确信）——验题人注。"},{"iden":"statement","content":"**这是一道交互题。**\n\n落日可以抽象成一个序列 $\\{a_n\\}$.\n\n$\\{a_n\\}$ 是一个 $1\\sim n$ 的排列。\n\n你还有一个数列 $\\{d_n\\}$，为**当前** $a$ 数列的前缀最大值。\n\n换言之，\n$$d_i=\\max_{j=1}^i \\{a_j\\}$$\n\n注意：根据前文的定义，$\\{d_n\\}$ 可能随着 $\\{a_n\\}$ 数列的改变而改变。\n\n您可以进行两种不同的操作：\n\n- 指定一个 $i$，询问对于当前的 $a$ 数列， $d_{1\\sim i}$ 中有几个不同的值。\n- 指定一个 $i$，使得 $a_i\\leftarrow 0$.\n\n请使用不超过 $5500$ 次操作求出**原排列**。\n\n**保证交互库是静态的，即交互库不会在交互过程中改变 $a$ 数列。**"},{"iden":"input","content":"本题多测，第一行一个整数 $T$，表示测试组数，接下来 $T$ 行每行一个整数 $n$，表示本组数据下数列的长度。\n\n本题使用 IO 交互模式。\n### 交互格式\n- `? 1 i` 询问 $d_{1\\sim i}$ 中有几个不同的值，交互库会返回一个正整数 $x$ 表示答案。\n\n- `? 2 i` 使 $a_i=0$。\n\n- `! a1 a2 a3 ... an` 输出答案。\n\n请注意：在每组数据中，请保证前两种操作的次数总和不超过 $5500$。\n\n需要注意的是，在每一次操作后，需要调用以下函数刷新缓存：\n\n- 对于 C/C++：`fflush(stdout);`\n- 对于 C++：`std::cout << std::flush;`\n- 对于 Java：`System.out.flush();`\n- 对于 Python：`stdout.flush();`\n- 对于 Pascal：`flush(output);`\n\n对于其他语言，请自行查阅对应语言的帮助文档。"},{"iden":"output","content":"见「交互格式」。"},{"iden":"note","content":"**样例仅供理解交互过程，可能不符合逻辑。**\n\n【样例解释】\n\n初始的序列 $a$ 为 `1 2 3`，$d$ 为 `1 2 3`.\n\n在对交互库输出了形如 `? 2 2` 的命令后，序列 $a$ 变为 `1 0 3`，$d$ 变为 `1 1 3`，此时 $d_1\\sim d_3$ 中有 $2$ 种不同的值，分别是 $1,3$.\n\n\n\n------------\n\n\n可供选手参考的资料：[OI Wiki-交互题](https://oi-wiki.org/contest/interaction/) **|** [猜数（IO交互版）\n](https://www.luogu.com.cn/problem/P1733)\n\n\n\n------------\n\n## 数据范围\n- 对于 $10\\%$ 的数据，$T=1$；\n- 对于 $30\\%$ 的数据，$n\\le 70$；\n- 对于另外 $20\\%$ 的数据，保证数列 $a$ 随机生成；\n- 对于全部数据：$T \\leq 10,1\\leq n\\leq 500$。"}],"translated_statement":null,"sample_group":[["1\n\n3\n\n1\n\n2\n\n3\n\n\n2\n\n","\n\n\n? 1 1\n\n? 1 2\n\n? 1 3\n\n? 2 2\n? 1 3\n\n! 1 2 3"]],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}