U437258 「HCOI-R2」哀之树(原定已废)
题目背景
至于为啥就废了详见 [P10553 帖子](https://www.luogu.com.cn/discuss/830145)。
------------
哀听到了树上的猫叫声。
哀很想上树把猫抱下来。
哀需要知道树长啥样子。
哀已经困得睁不开眼了。
哀只好让小柯告诉她了。
题目描述
有一颗 $n$ 个点的有根完全二叉树,哀想知道每个点的父亲。
哀每次询问小柯两个点的编号。
小柯想看看哀有多聪明,所以只会告诉她这两个点树上最近公共祖先的编号。
你想知道如果你是哀该如何还原这颗树。
不过小柯对你没有那么有耐心,他最多只能接受你 $k$ 次询问。
输入格式
### 交互格式
第一行,输入两个正整数 $n,k$。
在此之后,你应当进行不超过 $k$ 次询问。
对于你的每组询问,输出 $?\ x\ y$,表示给出两个点的编号,你需要保证 $1\leq x,y\leq n$。
如果你已经得到答案,请输出 $!\ fa_1\ fa_2 \dots fa_n$,满足 $0\leq fa_i\leq n$,$fa_i$ 代表你得到树中 $i$ 的父结点(**根结点的父节点视为 $0$**),在这之后你应当立即退出本轮交互。
每次你输出之后,请**刷新缓冲区**。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:`fflush(stdout)`;
- 对于 C++:`std::cout
输出格式
见 **【输入格式】**。
说明/提示
**本题采用捆绑测试。**
+ Subtask 0(15 pts):$k=n^2$。
+ Subtask 1(25 pts):$k=50n$。
+ Subtask 2(60 pts):$k=20n$。
对于所有数据,$1\leq n\leq5\times10^4$,$1\leq k\leq10^6$。