AT_abc392_e [ABC392E] Cables and Servers

Description

$ 1 $ から $ N $ の番号がついた $ N $ 台のサーバーと $ 1 $ から $ M $ の番号がついた $ M $ 本のケーブルがあります。 ケーブル $ i $ はサーバー $ A_i $ とサーバー $ B_i $ を双方向に結んでいます。 以下の操作を何回か( $ 0 $ 回でもよい)行うことで、全てのサーバー同士がケーブルを介して繋がっているようにしてください。 - 操作:ケーブルを $ 1 $ つ選び、その片方の端を別のサーバーに繋ぎ変える 操作の最小回数と、最小回数となる操作列を求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ A_1 $ $ B_1 $ $ A_2 $ $ B_2 $ $ \vdots $ $ A_M $ $ B_M $

Output Format

操作回数の最小値を $ K $ とする。 $ K+1 $ 行出力せよ。 $ 1 $ 行目には $ K $ を出力せよ。 $ i+1 $ 行目には $ i $ 回目の操作で選ぶケーブルの番号、繋ぎ変える前に繋がっていたサーバーの番号、繋ぎ変えたあと繋がっているサーバーの番号をこの順に空白区切りで出力せよ。 条件を満たす解が複数存在する場合、どれを出力しても正解とみなされる。

Explanation/Hint

### Sample Explanation 1 ケーブル $ 1 $ のサーバー $ 1 $ に繋がっている側の端をサーバー $ 3 $ に繋ぎ変えることで、サーバー同士がケーブルを介して繋がっている状態にすることができます。 ![図](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc392_e/20457ba714e5ddd3bddddfa72d520af9005c6b30570f632d5fd96ff02194f4ae.png) このほか、「ケーブル $ 5 $ のサーバー $ 4 $ に繋がっている側の端をサーバー $ 1 $ に繋ぎ変える」という操作や、「ケーブル $ 2 $ のサーバー $ 2 $ に繋がっている側の端をサーバー $ 3 $ に繋ぎ変える」という操作でもサーバー同士がケーブルを介して繋がっている状態にすることができるため、正解とみなされます。 ### Sample Explanation 2 操作をする必要がないこともあります。 ### Constraints - $ 2 \leq N \leq 2\times 10^5 $ - $ N-1 \leq M \leq 2\times 10^5 $ - $ 1 \leq A_i,B_i \leq N $ - 入力は全て整数である