#arc142c. [arc142_c]Tree Queries

[arc142_c]Tree Queries

問題文

NN 頂点の木があり、各頂点には 1,ldots,N1,\\ldots,N と番号が付けられています。
また、各整数 u,v,(1lequ,vleqN)u,v\\, (1 \\leq u,v \\leq N) に対し、頂点 u,vu,v の距離 du,vd_{u,v} を次のように定めます。

  • 頂点 uu と頂点 vv を結ぶ最短パスに含まれる辺の本数

あなたは次のような質問を 00 回以上 2N2N 回以下行うことが出来ます。

  • 1lequ,vleqN1\\leq u,v \\leq N かつ u+v>3u+v>3 を満たす整数 u,vu,v を指定し、頂点 u,vu,v の距離 du,vd_{u,v} を聞く。

頂点 1,21,2 の距離 d1,2d_{1,2} を求めてください。

制約

  • 3leqNleq1003 \\leq N \\leq 100
  • NN は整数
  • 木はプログラムとジャッジの対話の開始前に決定される

入出力

この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジプログラムが入出力を介して対話を行う形式の問題)である。

まず、あなたのプログラムに標準入力から正の整数 NN が与えられる。

NN

その後、あなたは質問を行うことが出来る。
質問は標準出力に以下の形式で出力せよ(末尾に改行を入れること)。

? uu vv

質問が正当な場合、その質問への答え du,vd_{u,v} が標準入力から与えられる。

du,vd_{u,v}

質問の形式が間違っている・質問を規定の回数より多く行った等の理由から質問が不正と判定された場合、質問への答えの代わりに -1 が与えられる。

-1

この時、提出はすでに不正解と判定されている。ジャッジプログラムはこの時点で終了するため、あなたのプログラムも終了するのが望ましい。

答え d1,2d_{1,2} が分かったら、標準出力に以下の形式で出力せよ(末尾に改行を入れること)。

! d1,2d_{1,2}

注意点

  • 出力を行うたびに標準出力をflushせよ。そうしなかった場合、ジャッジ結果が TLE