呢道係一道互動題。
小青魚有一個隱藏住、包含 $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 選項執行呢個工具就可以顯示使用說明。呢個工具會檢查互動過程同埋你匯報嘅答案,但係唔會強制限制執行時間或者記憶體。
測試工具喺成個互動過程入面都會用佢輸入檔案入面指定嘅固定圖,而評測嗰陣嘅官方互動器係自適應嘅。通過咗測試工具嘅測試並唔保證你嘅程式喺面對官方互動器嗰陣一定啱。