#arc154d. [arc154_d]A + B > C ?

[arc154_d]A + B > C ?

题目描述

PCT 有一个排列 (P1,P2,dots,PN)(P_1,P_2,\\dots,P_N),其中 PP(1,2,dots,N)(1,2,\\dots,N) 的排列。你只知道 NN 的值。

你最多可以询问他 2500025000 次以下类型的问题。

  • 给定一个整数三元组 (i,j,k)(i,j,k),使得 1lei,j,kleN1 \\le i,j,k \\le N,询问 Pi+Pj>PkP_i + P_j > P_k 是否成立。

找出所有的 P1,P2,dots,PNP_1,P_2,\\dots,P_N

约束条件

  • 1leNle20001 \\le N \\le 2000
  • PP 在程序和评测系统互动开始之前就已决定。

输入输出格式

这是一个交互型任务,你的程序和评测系统通过输入输出进行交互。

首先,从标准输入中读取 NN,即排列的长度:

NN

然后,你可以提问。将你的问题以以下格式打印到标准输出:(末尾应有换行符。)

? ii jj kk

如果问题是合法的,答案 ansans 将从标准输入给出:

ansans

其中,ansans 可能是 YesNo

如果问题格式错误或因为你问的问题超过了允许的次数而被判定为无效,将会从标准输入给出 -1

-1

在这种情况下,提交已被判定错误。评测系统会结束互动;你的程序最好也终止。

一旦你确定了所有的 P1,P2,dots,PNP_1, P_2, \\dots, P_N,请将它们以以下格式打印到标准输出:(末尾应有换行符。)

! P1P_1 P2P_2 dots\\dots PNP_N

评判

  • 每次打印输出时,结尾都要有一个换行符并刷新标准输出。否则可能会超时