你是 ICPC 公司的一名经理。公司大楼里有 $N$ 台计算机(编号从 1 到 $N$)。有 $N - 1$ 条电缆,编号从 1 到 $N - 1$,将所有计算机连接成一个单一的网络。电缆 $i$ 连接计算机 $U_i$ 和 $V_i$。每条电缆都可以设置为紧急模式,在紧急模式下,电缆 $i$ 仅能将数据从计算机 $U_i$ 传输到计算机 $V_i$,而不能反向传输。在灾难期间,所有电缆都必须处于紧急模式。
通过研究,你发现了一种确定网络脆弱性的新方法。你希望在当前网络中添加零条或多条新电缆,使得网络在灾难期间不再脆弱。当且仅当存在唯一的 1 到 $N$ 的排列,使得对于所有连接计算机 $u$ 和 $v$ 的电缆,在排列中 $u$ 都出现在 $v$ 之前时,你的网络才是不脆弱的。换句话说,它应该有且仅有一个拓扑排序。
下图展示了不脆弱网络和脆弱网络的示例。
对于不脆弱的网络,左侧和右侧网络满足要求的唯一排列分别是 $[1, 2, 3]$ 和 $[3, 1, 2]$。同时,对于脆弱的网络,左侧网络满足要求的排列有 2 个:$[1, 2, 3]$ 和 $[3, 1, 2]$;而右侧网络则没有任何排列满足要求。
你对为了使网络在灾难期间不再脆弱而需要添加的最少新电缆数量感兴趣。此外,你还想知道,使用最少数量的电缆时,应该连接哪几对计算机。如果有多种连接方式,你可以选择其中任意一种。在给定的约束条件下,可以证明一定存在一种使网络不再脆弱的方法。
输入格式
第一行包含一个整数 $N$ ($2 \le N \le 100\,000$)。
接下来的 $N - 1$ 行,每行包含两个整数 $U_i$ $V_i$ ($1 \le U_i, V_i \le N$)。输入的边构成一棵树。
输出格式
第一行包含一个整数,表示为了使网络在灾难期间不再脆弱而需要添加的最少新电缆数量。记此数为 $K$,新电缆编号从 1 到 $K$。
如果 $K$ 不为 0,则输出 $K$ 行。接下来的 $K$ 行,每行包含两个整数 $A_i$ $B_i$,表示由新电缆 $i$ 连接的计算机。在灾难期间,新电缆 $i$ 仅能将数据从计算机 $A_i$ 传输到计算机 $B_i$,而不能反向传输。如果存在多种解决方案,你可以输出其中任意一种。
样例
输入 1
3 1 2 3 2
输出 1
1 3 1
输入 2
3 1 2 2 3
输出 2
0
输入 3
5 1 2 1 3 3 4 3 5
输出 3
2 2 3 4 5
说明
样例输入/输出 #3 的解释
下图展示了原始网络以及在灾难期间添加电缆后的新网络。满足要求的唯一排列是 $[1, 2, 3, 4, 5]$。