这是一个交互式问题。
有些比赛中,你可以获得排名表的第一行并获得第 0 名的奖状,而其下方的队伍获得第 1 名的奖杯。
让我们推广这种情况。假设有 $n$ 名选手参加了比赛,没有并列名次,且选手的名次是连续的整数。比赛有第 1、第 2 和第 3 名,但排名表的第一行对应的名次可能小于第 1 名。假设比赛已经结束,你需要找出每个人的最终名次。你可以询问选手他们相对于其他选手的名次。然而,选手并不总是会回答你的问题。这取决于你询问的对象是谁,具体规则如下:
- 名次高于第 1 名的选手只会回答关于那些名次在他之后的人的问题;
- 获得第 1 名的选手不会回答关于任何人的问题;
- 获得第 2 名的选手只能回答他表现得比第 3 名好,不会回答关于其他人的问题;
- 获得第 3 名的选手只会回答关于那些名次在他之后的人的问题;
- 名次低于第 3 名的选手只会回答关于那些名次在他之前的人的问题。
请确定所有选手的名次。
交互
首先,评测程序会打印一行,包含一个整数 $n$ ($3 \le n \le 1000$)。保证比赛存在第 1、第 2 和第 3 名,但排名表的第一行对应的名次可能小于第 1 名。为了进行询问,选手被编号为 $1$ 到 $n$,编号顺序与他们的名次无关。
之后,选手程序必须通过打印以下格式的命令与评测程序进行交互:
? a b:询问编号为 $a$ 的选手,他的名次与编号为 $b$ 的选手的名次相比如何。作为回应,评测程序将输出+(如果编号为 $a$ 的选手表示他表现得比编号为 $b$ 的选手好)、-(如果他表示表现得比编号为 $b$ 的选手差),或者?(如果他决定不回答)。! ans:问题的答案。其中ans是一个整数序列,表示编号从 $1$ 到 $n$ 的选手所获得的名次。打印此命令后,程序应立即终止。
样例
输入格式 1
6 ? ? ? + ? ? ? ? + ? ? + - -
输出格式 1
? 6 5 ? 6 4 ? 5 6 ? 5 4 ? 5 1 ? 5 3 ? 4 5 ? 4 6 ? 4 3 ? 4 2 ? 1 2 ? 2 1 ? 3 4 ? 3 1 ! 0 -1 4 3 2 1
说明
对于本题的每个测试用例,所有选手的名次都是预先固定好的,且不会以任何方式受到你查询的影响。