每年,Bitowice 都會舉辦「$P = NP$ 平等遊行」。這是一個讓那些認為「對於每個存在多項式時間非確定性圖靈機識別的語言 $L$,也存在一個多項式時間確定性圖靈機識別該語言」的人們,向社會表達其觀點的活動。
往年的遊行都進行得很平靜,參與者頂多高喊「3-SAT 很簡單!」或舉著寫有最新多項式時間「漢米爾頓環演算法」偽代碼的標語,並未引起路人太大的興趣。今年,遊行組織者決定引起 Bitowice 居民的注意,並計畫高喊更具衝擊性的口號(如果 $P = NP$ 則某種程度上是真的),例如「我們的錢不安全!」和「我們的隱私受到威脅!」。
Bitowice 安全局 (ABB) 的官員擔心,遊行參與者宣揚的內容可能會導致居民開始大規模從銀行提款,並刪除 ABB 用於監視民眾的社群媒體帳號。簡而言之,他們懷疑這會導致 Bitowice 的局勢動盪。
為了防止這種動盪,ABB 的官員打算組織一場反示威活動,宣揚 $P \neq NP$ 的信念。同時,他們計畫和平地阻止遊行隊伍前進。ABB 打算突然在遊行路線上的某個路口開始反示威活動。遺憾的是,遊行的確切路線一直保密到最後一刻,而該機構需要提前準備反示威地點。ABB 只收到消息稱,遊行將從某個路口開始,經過一定數量的道路,最後回到起點。你的第一個任務是初步驗證此資訊,即檢查 Bitowice 的道路基礎設施是否允許存在這樣的路線。此外,探員們想知道,如果資訊屬實,是否有遊行路線必須經過的路口。他們請你找出所有這類路口——他們將從中選擇最合適的反示威地點(如果不存在這樣的路口,ABB 將執行 B 計畫)。
Bitowice 有 $n$ 個路口,由單向道路連接。由於遊行隊伍中也包含機動車輛,我們假設遊行只能沿著道路的方向行駛。
輸入格式
輸入的第一行包含兩個整數 $n$ 和 $m$ ($2 \le n \le 500\,000$, $1 \le m \le 1\,000\,000$),分別表示 Bitowice 的路口數量和道路數量。路口編號為 $1$ 到 $n$。接下來的 $m$ 行描述了道路。第 $i$ 行包含兩個整數 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le n, a_i \neq b_i$),表示第 $i$ 條道路從編號為 $a_i$ 的路口通往編號為 $b_i$ 的路口。沒有重複的有序對 $(a_i, b_i)$。
輸出格式
如果無法按照 ABB 掌握的資訊組織遊行路線,請輸出包含單字 NIE 的一行。否則,請輸出兩行。第一行應包含一個整數 $k$,表示遊行路線必然經過的路口數量。第二行應輸出這 $k$ 個路口的編號,按升序排列(如果 $k = 0$,則第二行應留空)。
範例
範例輸入 1
4 5 1 2 2 3 3 1 3 4 4 2
範例輸出 1
2 2 3
範例輸入 2
3 2 1 2 2 3
範例輸出 2
NIE