TUNA2026 東京Stage Welcome コンテスト (オープン) 2026/09/23 14:00 ~ 2026/09/23 18:00 4:00:00

E Mod Walker

問題
制限時間: 2 sec メモリ制限: 256 MB
Mod Walker
Statement

この問題はインタラクティブな問題です。

円環状に並んだ \(P\) 個のマスがあり、順に \(0, 1, \dots, P-1\) と番号が付けられています。ここで \(P\) は素数です。 このマスの上に駒が \(1\) 個置かれています。駒には初期位置 \(a\) と移動量 \(d\) という \(2\) つの整数が定まっており、\(0 \leq a \le P-1\)、\(0 \leq d \leq P-1\) を満たします。

最初に、あなたには \(P\) のみが与えられます。 その後、あなたは次の質問を繰り返すことができます。

  • 整数 \(r\) \((0 \le r \le P-1)\) を選ぶ。その時点で駒がマス \(r\) にあるかどうかが返される。
駒は質問を \(1\) 回行うたびに、\(d\) マスだけ番号が大きくなる向きに進みます。ただし、番号 \(P-1\) のマスの次は番号 \(0\) のマスです。 正確には、\(i\) 回目の質問を行う時点での駒の位置を \(p_i\) とすると \[p_i = (a + (i-1) \cdot d) \bmod P\] が成り立ちます。すなわち \(1\) 回目の質問の時点では駒は初期位置 \(a\) にあり、その後の各質問ごとに \(d\) だけ進みます。 \(2P\) 回以下の質問で \(a\) と \(d\) の値を特定してください。

Input

入力は以下の制約をすべて満たします。

  • \(2 \leq P \leq 500\)
  • \(P\) は素数

Interaction

最初に、\(P\) が次の形式で標準入力から与えられます。

\(P\)

\(P\) を受け取った後、標準出力に以下の形式で出力することで質問を行うことができます。

? \(r\)

ここで、 \(r\) は \(0 \le r \le P-1\) を満たす整数です。この質問に対する応答は、以下の形式で標準入力から与えられます。

\(K\)

ここで、\(K\) は質問に対する答えで、以下のように定義されます。

  • その時点で駒がマス \(r\) にある場合、\(1\)
  • そうでない場合、\(0\)

質問は合計 \(2P\) 回まで行うことができます。

\(a\) と \(d\) を特定したら、標準出力に以下の形式で解答を出力してください。その後、直ちにプログラムを終了してください。

! \(a\) \(d\)

この出力は質問の回数には数えられません。