每年,比托维采(Bitowice)都会举办“$P = NP$ 平等游行”。这是一场游行活动,参与者们向社会表达他们的观点:他们认为对于每一个能在多项式时间内由非确定性图灵机识别的语言 $L$,也存在一个能在多项式时间内识别该语言的确定性图灵机。
往年的游行都很平静,参与者们顶多高喊“3-SAT 很简单!”或者举着写有最新多项式时间“哈密顿回路算法”伪代码的横幅,并没有引起路人的太大兴趣。今年,游行组织者决定引起比托维采居民的注意,并计划高喊一些更具冲击力的口号(如果 $P = NP$,这些口号在某种程度上是真的),例如“我们的钱不安全!”和“我们的隐私受到威胁!”。
比托维采安全局(ABB)的官员担心,游行参与者宣扬的内容可能会导致居民大规模从银行提取资金,并注销 ABB 用于监视民众的社交媒体账户。简而言之,他们怀疑比托维采的局势可能会动荡。
为了防止这种动荡,ABB 官员打算组织一场反游行,宣传 $P \neq NP$ 的信念。同时,他们计划和平地阻止游行队伍前进。ABB 打算突然在游行路线上的某个路口开始反游行。不幸的是,游行的确切路线一直保密到最后一刻,而该机构需要提前准备反游行的地点。ABB 只得到消息称,游行将从某个路口开始,经过一定数量的道路,最终回到起点。你的第一个任务是初步核实这一信息,即检查比托维采的道路基础设施是否允许存在这样的路线。此外,特工们想知道,如果该信息属实,游行路线是否必须经过某些特定的路口。他们请求你找出所有这样的路口——他们将从中选择最合适的反游行地点(如果不存在这样的路口,ABB 将执行 B 计划)。
比托维采有 $n$ 个路口,由单向道路连接。由于游行队伍中也包含机动车辆,我们假设游行只能沿着道路的方向移动。
输入格式
输入的第一行包含两个整数 $n$ 和 $m$ ($2 \le n \le 500\,000, 1 \le m \le 1\,000\,000$),分别表示比托维采的路口数量和道路数量。路口编号为 $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