本題是一道互動題。
小青魚有一個隱藏的包含 $n$ 個頂點的簡單無向圖,頂點編號為 $1$ 到 $n$。你知道 $n$ 的值,但你不知道任何一條邊。小青魚非常喜歡割(cut)這一概念。對於頂點集合 $S$,令 $\operatorname{cut}(S)$ 表示恰好有一個端點在 $S$ 中的邊的數量。
小青魚允許你透過發起詢問來比較割的大小。在一次詢問中,你選擇兩個頂點集合 $S_1$ 和 $S_2$。小青魚會告訴你 $\operatorname{cut}(S_1)$ 是小於、等於還是大於 $\operatorname{cut}(S_2)$。
你大概能猜到接下來的內容會和還原整張圖有關,但這次的任務要簡單一些。小青魚會給你一個頂點 $u$,他希望你在至多 $n + 10$ 次詢問內找出所有與 $u$ 相鄰的頂點。
輸入格式
輸入的第一行包含兩個整數 $n$ 和 $u$($1 \le n \le 1000$,$1 \le u \le n$),分別表示頂點的數量以及給定的頂點。隨後,互動開始。
互動
要發起一次詢問,請按以下格式輸出一行:
$$?\ s_1\ s_2$$
其中 $s_1$ 和 $s_2$ 是長度為 $n$ 且僅由字元 0 和 1 組成的字串。對於每個 $j \in \{1, 2\}$,頂點 $i$ 屬於 $S_j$ 若且唯若 $s_j$ 的第 $i$ 個字元為 1。集合可以為空,可以重疊,也可以相等。
作為對該詢問的回應,你將得到單一字元 <、= 或 >,分別表示 $\operatorname{cut}(S_1)$ 小於、等於或大於 $\operatorname{cut}(S_2)$。你必須保證發起的詢問次數不超過 $n + 10$。
要回報答案,請按以下格式輸出一行:
$$!\ k\ v_1\ v_2\ \dots\ v_k$$
其中 $k$($0 \le k \le n - 1$)是與 $u$ 相鄰的頂點數量,$v_1, v_2, \ldots, v_k$ 是這些頂點互不相同的編號(順序任意)。如果 $k = 0$,則輸出 ! 0。回報答案不計入詢問次數。在回報答案後,你的程式必須立即終止。
在輸出詢問或回報答案後,請不要忘記輸出換行字元並清空輸出緩衝區(flush)。如果你發起了不合法的詢問或超過了詢問次數限制,互動器將關閉輸入串流,此時你的程式必須立即終止。
在本題中,互動器是自適應的(adaptive)。這意味著只要不與之前的任何回應相矛盾,圖就可能會根據你的詢問發生改變。你的答案必須對所有與已收到的全部回應相一致的圖都正確。
範例
輸入格式 1
4 1 < = < =
輸出格式 1
? 0000 1000 ? 0100 1100 ? 0010 1010 ? 0001 1001 ! 2 2 4
說明
與範例互動相一致的一張圖包含邊 $(1, 2)$、$(1, 4)$ 和 $(2, 3)$。
測試工具: 題目附件中提供了一個測試工具,以幫助選手開發和測試自己的程式。你可以從附件中下載該工具。使用 -h 選項執行該工具即可顯示使用說明。該工具會檢查互動過程和所回報的答案,但不會強制限制執行時間或記憶體。
測試工具在整個互動過程中使用其輸入檔案中指定的固定圖,而評測時的官方互動器是自適應的。通過測試工具的測試並不保證你的程式在面對官方互動器時一定正確。