P1028

城市改建

城市改建

CS 城由 nn 座美丽的小镇组成,小镇之间通过 n−1n-1 条公路连接,任意两座小镇之间都可以互相到达。

尽管如此,居民仍常常向负责人 YY 抱怨:两座小镇之间的距离,也就是连接它们的路径所经过的公路数量,实在太远了。于是 YY 决定改建城市。

YY 认为使用 n−1n-1 条公路连接所有小镇已经足够,因此改建后仍会保留这一结构。同时,他不打算大兴土木,只会拆除一条已有公路,再新建一条公路。

请计算改建后,所有小镇两两之间距离的最大值最小可以是多少,并给出任意一组达到该最小值的改建方案。如果存在两座小镇无法互相到达,则认为它们之间的距离为无穷大。

输入格式

第一行包含一个整数 nn,表示小镇数量。

接下来 n−1n-1 行,每行包含两个整数 aa、bb,表示小镇 aa 与小镇 bb 之间有一条公路。

输出格式

通常情况下,输出三行。

第一行包含一个整数,表示改建后所有小镇两两之间距离的最大值所能达到的最小值。

第二行包含两个整数,表示被拆除公路的两个端点。

第三行包含两个整数,表示新建公路的两个端点。

新建的公路可以与拆除的公路相同,例如原有结构已经最优时,可以采用这种方案。同一条公路的两个端点可以按任意顺序输出。如果有多组最优方案,输出其中任意一组即可。

特别地,当 n=1n=1 时,没有任何公路可以拆除,此时只需输出一行 00。

样例输入

10
5 3
1 3
5 9
8 5
2 6
7 10
2 1
2 4
7 6

样例输出

4
3 1
5 6

数据范围

  • 1≤n≤3×1051\le n\le 3\times 10^5;
  • 小镇编号为 11 至 nn;
  • 输入的 n−1n-1 条公路构成一棵树,任意两座小镇之间都可以互相到达;
  • 本题测试数据满足 10≤n≤3×10510\le n\le 3\times 10^5。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

10
5 3
1 3
5 9
8 5
2 6
7 10
2 1
2 4
7 6

输出

4
3 1
5 6