做一名旅行推销员是一项艰苦的工作。Per 就是这样一名推销员,他想找到一种高效的方式,访问某个外国的所有城市,且每个城市恰好访问一次。
Per 对“高效”的定义很独特,因为他讨厌坐飞机。更糟糕的是,他绝对拒绝使用汽车。Per 最喜欢的交通方式是火车。他非常乐意尽可能长时间地乘坐火车。
这个国家的铁路系统非常奇特且极其有限。所有的火车线路都是单向的,一旦有人从某个城市乘火车离开,就不存在任何火车线路序列能回到该城市。这是因为该国试图通过昂贵的机票来获利。在这个国家,每个城市都有且仅有一个机场,因此你可以从任何城市乘飞机前往任何其他城市。
Per 不仅想知道他需要的最少飞行次数。他还想知道在飞行次数最少的某次行程中,他可以访问哪些城市的机场。你看,Per 喜欢机场餐厅,他想知道他可以访问哪些餐厅,以便选择他的路线来访问他最喜欢的餐厅。如果他飞入或飞出某个城市,他就可以访问该机场。注意,Per 可以从任何城市出发。
考虑这个有四个城市的国家,箭头表示单向火车路线:

Per 可以采取多种可能的行程,但他至少需要飞行一次。以下是一些(但不是全部)飞行次数最少的可能路线,其中 $\to$ 表示火车行程,$\Rightarrow$ 表示飞行行程:
$$ 1 \to 2 \to 4 \Rightarrow 3\\ 2 \to 4 \Rightarrow 1 \to 3\\ 1 \to 3 \to 4 \Rightarrow 2 $$
在这个例子中,每个机场在至少一条路线上都被访问过。Per 可以选择他的路线,从而访问他想要的任何机场餐厅。
输入格式
每个测试用例以一行包含两个空格分隔的整数 $n$ ($1 \leq n \leq 10^5$) 和 $m$ ($0 \leq m \leq 10^5$) 开始,其中 $n$ 是城市数量,$m$ 是火车线路数量。城市编号为 $1 \cdots n$。
接下来的 $m$ 行,每行包含两个空格分隔的整数 $a$ 和 $b$ ($1 \leq a, b \leq n, a \ne b$),表示有一条从城市 $a$ 到城市 $b$ 的火车线路(但没有反向线路)。所有火车线路都是不同的。
输出格式
输出恰好两行。
第一行输出一个整数,表示 Per 访问所有城市所需的最少飞行次数。
第二行输出一个空格分隔的整数列表,表示他可以访问机场的城市。如果他可以在任意一条飞行次数最少的路线上访问某个机场,就应该将其列出。按升序输出这些数字。如果没有机场可被访问,则输出一个空行。
样例
样例输入 1
4 4
1 2
1 3
2 4
3 4
样例输出 1
1
1 2 3 4
样例输入 2
4 3
1 2
2 3
3 4
样例输出 2
0