AT_pakencamp_2022_day2_a Venues
Description
パ研王国は $ N $ 個の街とそれを繋ぐ $ M $ 本の道路からなります。街には標高が高い順に $ 1, 2, \ldots, N $ の番号がついており、全ての道路は標高が高い街から低い街へ一方向に移動することができます。具体的には、 $ i $ 番目の道路は街 $ A_i $ から街 $ B_i $ への一方向に移動することができます $ (A_i < B_i) $ 。
さて、今年もパ研合宿が開催されます。今年のパ研合宿ではいくつかの街に会場を設け、パ研王国のどの街からでも $ 0 $ 本以上の道路を通ることで会場のある街に移動できるようにします。
しかし、予算に制約があるため、会場を設ける街をできるだけ少なくしたいです。このとき、会場を設ける街の集合を一つ定めて下さい。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ A_1 $ $ B_1 $ $ A_2 $ $ B_2 $ $ \vdots $ $ A_M $ $ B_M $
Output Format
$ 1 $ 行目には、会場を設ける街の個数を出力せよ。これは条件を満たすように会場を設けるとき、会場を設ける街の数として考えられる最小値である必要がある。
$ 2 $ 行目には、会場を設ける街を空白区切りで**昇順に**出力せよ。
Explanation/Hint
### Sample Explanation 1
この出力例の場合、それぞれの街からは、次のように会場のある街に移動できます。
- 街 $ 1 $ からは街 $ 3, 4 $ に移動できる
- 街 $ 2 $ からは街 $ 4 $ に移動できる
- 街 $ 3 $ からは街 $ 3 $ に移動できる
- 街 $ 4 $ からは街 $ 4 $ に移動できる
また、会場を $ 1 $ つ以下の街に設けて、全ての街から会場のある街に移動することはできないため、この出力は条件を満たします。
### Constraints
- 入力は全て整数
- $ 1 \leq N \leq 10^5 $
- $ 0 \leq M \leq 2 \times 10^5 $
- $ 1 \leq A_i < B_i \leq N $ $ (1 \leq i \leq M) $