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$。