题目描述
给定一棵 个结点的无向树,结点编号为 ,每条边的长度都是 。
树上任意两点之间有唯一一条简单路径,路径的长度就是这条路径经过的边数。树中长度最大的路径称为树的直径,这条路径的两个端点称为直径端点,直径的长度记作 。
请你求出 ,并输出一对直径端点。由于直径可能不止一条,本题规定输出编号字典序最小的一对端点:
- 把每一对端点都按编号从小到大写成 ,其中 ;
- 先比较 , 最小的那一对优先;
- 若仍有多个,再比较 ,取 最小的那一对。
特别地,当 时,认为直径长度 ,唯一的直径端点是 ,此时输出 1 1。
输入格式
第一行一个整数 。
接下来 行,每行两个整数 (),表示结点 与结点 之间有一条边。
保证这些边构成一棵树,边的顺序与端点的先后顺序都是任意的。
输出格式
第一行一个整数 。
第二行两个整数 ,表示你选出的直径端点:要求 ,且在所有直径为 的端点对中字典序最小。当 时输出 1 1。
样例
输入
5 3 1 3 2 3 4 3 5
输出
2 1 2
样例解释:这是一棵星形树, 号结点与其余每个结点相连。任意两个不同的叶子之间距离都是 ,所以 ;所有直径端点对中, 的字典序最小。
输入
1
输出
0 1 1
数据范围
对于 的数据,。
本题共 个测试点,每个测试点 分。