#codethanksfestival2017e. [code_thanks_festival_2017_e]Coin Authentication

[code_thanks_festival_2017_e]Coin Authentication

問題文

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

イルカは街中でコインが入った NN 個の袋を見つけました。
i(1iN)i(1≦i≦N) 番目の袋の中に重さ wiw_i グラムのコインが 1000010000 枚入っています。

ここで、イルカは街で偽物コインが多く流通していることを思い出しました。
NN 個の袋のうち、いくつかの袋は偽物コインだけが入った袋かもしれません。
イルカは本物コインの袋を探そうとしています。

これらのコインの見た目は全く同じですが、本物コインと偽物コインでその重さが異なります。
本物コインの重さは 99 グラム、または 1111 グラムであり、偽物コインの重さは 88 グラム、1010 グラム、または 1212 グラムであることが知られています。
イルカは袋に入っているコインの重さ wiw_i を全く知りません。

イルカは友達のシャチから、はかりを借りることにしました。
はかりを利用して、コインの計測は以下の手順で行います。

  • それぞれの袋について、整数 0si10000(1iN)0≦s_i≦10000 (1≦i≦N) を決めます。
  • ii 番目の袋から sis_i 枚のコインを取り出して、はかりに乗せます。
  • その後に計測を行い、はかりの上に乗せたコインの重さの合計を知ることができます。
  • 最後に、はかりに乗せたコインを元の袋に戻します。

しかし、シャチはとても忙しいのでイルカは 高々 1010 回のコイン計測しかできません。
どの袋に本物コインが含まれているかを判定してください。

制約

  • 1N501≦N≦50
  • 8wi128≦w_i≦12
  • NNwiw_i は全て整数

入出力

最初に、標準入力から NN が以下の形式で与えられる:

NN

次に、あなたはクエリを質問して、コインの計測を行う。
このクエリは高々 1010 回まで出力することができる。
各クエリでは、はかりの上に乗せるコインの枚数を以下の形式で標準出力へ出力しなければならない:

? s1s_1 s2s_2 sNs_N

ここで sis_i は、 はかりの上に乗せる ii 番目の袋のコインの枚数であり、00 以上 1000010000 以下の整数でなければならない。

その後、クエリの答えが標準入力から以下の形式で与えられる:

ansans

ここで ansans は非負の整数であり、はかりの計測結果が ansans グラムであることを表す。

最後に、答えを以下の形式で出力しなければならない:

! a1a_1 a2a_2 aNa_N

ここで aia_iii 番目の袋に入っているコインが本物コインなら 1、偽物コインなら 0 でなければならない。
なお、答えの出力はコインの計測を行う質問クエリの回数制限に含まれない。

ジャッジ

  • 出力の最後に改行を含めて出力しなければならない。そのあと、標準出力を flush しなければならない。 そうでないときは TLE の可能性がある。
  • 答えを出力した後、プログラムをすぐに終了しなければならない。そうでないときの挙動は定義されていない。
  • 出力の答えが間違っている場合の挙動は定義されていない (WAとは限らない)。

サンプル

このサンプルでは N=5N = 5, w1=8w_1 = 8, w2=9w_2 = 9, w3=10w_3 = 10, w4=11w_4 = 11, w5=12w_5 = 12 で、答えは 0 1 0 1 0 である。

Input

Output

55

?? 11 00 00 00 00

88

?? 00 11 00 00 00

99

?? 00 00 11 00 00

1010

?? 00 00 00 11 00

1111

?? 00 00 00 00 11

1212

!! 00 11 00 11 00