給定一棵具有 $N$ 個頂點的樹 $T = (V, E)$。對於一個長度為 $k$ 的頂點序列 $\{a_1, \dots, a_k\}$,定義其分數如下:
- 令 $d(u, v)$ 為樹 $T$ 中頂點 $u$ 與 $v$ 之間路徑上的邊數。則分數為 $\prod_{i=1}^{k} d(a_i, a_{(i \pmod k)+1)}$。
給定一個 $V$ 的子集 $S$。對於每個 $1 \le k \le N$,求出以下數值 $q_k$:
- 所有元素皆屬於 $S$ 的長度為 $k$ 的頂點序列 $\{a_1, \dots, a_k\}$ 的分數總和,取模 $2^{61} - 1$。
KUPC-kun 事先秘密保存了樹 $T$ 的資訊,並持續使用該 $T$ 作為提供給程式的樹。你試圖透過上述程式來恢復樹中葉節點的資訊。令樹的頂點數為 $N$,你最多可以詢問 $N$ 次以下問題:
- 選擇一個 $V$ 的子集 $S$ 並詢問程式的輸出。
假設 KUPC-kun 的程式是正確的,請根據透過詢問獲得的資訊,識別出樹 $T$ 中包含的所有葉節點。評測系統不是適應性的(non-adaptive),樹 $T$ 在互動開始前即已固定。
互動
首先,從標準輸入讀入 $N$。($2 \le N \le 50$)
對於每次詢問,請以以下格式輸出至標準輸出:
? s1s2 · · · sN
其中 s1s2 · · · sN 是一個長度為 $N$ 的字串,代表子集 $S$,若 $i \in S$ 則 $s_i = 1$,若 $i \notin S$ 則 $s_i = 0$。
作為回應,從標準輸入讀入以下內容:
q1 q2 · · · qN
當你識別出所有葉節點後,請以以下格式輸出你的答案:
! t1t2 · · · tN
其中 t1t2 · · · tN 是一個長度為 $N$ 的字串,若 $i$ 是葉節點則 $t_i = 1$,若 $i$ 不是葉節點則 $t_i = 0$。
輸出此答案後,請立即終止你的程式。每當你輸出內容時,請在末尾加上換行符號並刷新標準輸出。
範例
輸入格式 1
5 0 8 0 32 0 0 44 108 968 3960 0 0 0 0 0 0 76 348 3336 22200
輸出格式 1
? 00101 ? 11001 ? 10000 ? 11111 ! 11001
說明
對於第一個範例,評測系統秘密持有的樹的邊集為 $(1, 3), (2, 3), (3, 4), (4, 5)$。在第一次詢問中,$S = \{3, 5\}$。注意 $d(3, 3) = 0, d(3, 5) = d(5, 3) = 2, d(5, 5) = 0$。
例如,有以下 4 個元素皆屬於 $S$ 的長度為 2 的頂點序列 $a$:
- 若 $a = (3, 3)$,則此序列的分數為 $d(3, 3) \times d(3, 3) = 0 \times 0 = 0$
- 若 $a = (3, 5)$,則此序列的分數為 $d(3, 5) \times d(5, 3) = 2 \times 2 = 4$
- 若 $a = (5, 3)$,則此序列的分數為 $d(5, 3) \times d(3, 5) = 2 \times 2 = 4$
- 若 $a = (5, 5)$,則此序列的分數為 $d(5, 5) \times d(5, 5) = 0 \times 0 = 0$
評測系統回應 $q_2 = 8$,這是 $0 + 4 + 4 + 0$ 除以 $2^{61} - 1$ 的餘數。透過對其他序列長度進行類似計算,我們得到評測系統的回應 0 8 0 32 0。此樹的葉節點為頂點 $1, 2, 5$,輸出 ! 11001 即可正確完成葉節點的識別。