/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Why
{
public int[] depths1;
public int[] depths2;
public ArrayList<Integer>[] arr;
{
Why w = new Why();
w.comp();
}
public void dfs1(int source, int dep)
{
if(depths1[source] != -1)
{
return;
}
depths1[source] = dep;
System.
out.
println("HELLO WHAT IS WRONG");
for(int i = 0; i < arr[source].size(); i++)
{
int next = arr[source].get(i);
if(depths1[next] == -1)
{
dfs1(next, dep+1);
}
}
}
public void dfs2(int source, int dep)
{
if(depths2[source] == -1)
{
depths2[source] = dep;
}
else return;
for(int next : arr[source])
{
if(depths2[next] == -1)
{
dfs2(next, dep+1);
}
}
}
public void comp()
{
Scanner sc
= new Scanner
(System.
in);
int n = sc.nextInt();
depths1 = new int[n];
depths2 = new int[n];
for(int i = 0; i < arr.length; i++) arr[i] = new ArrayList<>();
for(int i = 0; i < n-1; i++)
{
int u = sc.nextInt() - 1;
int v = sc.nextInt() - 1;
arr[u].add(v);
arr[v].add(u);
}
dfs1(0, 0);
long max = 0;
int newn = -1;
for(int i = 0; i < n; i++)
{
if(max < depths1[i])
{
newn = i;
max = depths1[i];
}
}
pw.println(newn);
for(int i = 0; i < depths1.length; i++) pw.println(depths1[i]);
// dfs2(newn, 0);
max = 0;
for(int i = 0; i < n; i++)
{
if(max < depths1[i])
{
max = depths1[i];
}
}
pw.println(max);
pw.close();
sc.close();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgV2h5CnsKCQoJcHVibGljIGludFtdIGRlcHRoczE7CglwdWJsaWMgaW50W10gZGVwdGhzMjsgCglwdWJsaWMgQXJyYXlMaXN0PEludGVnZXI+W10gYXJyOyAKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJV2h5IHcgPSBuZXcgV2h5KCk7CgkJdy5jb21wKCk7Cgl9CgkKCXB1YmxpYyB2b2lkIGRmczEoaW50IHNvdXJjZSwgaW50IGRlcCkKCXsKCQlpZihkZXB0aHMxW3NvdXJjZV0gIT0gLTEpIAoJCXsKCQkJcmV0dXJuOwoJCX0KCQlkZXB0aHMxW3NvdXJjZV0gPSBkZXA7CgkJU3lzdGVtLm91dC5wcmludGxuKCJIRUxMTyBXSEFUIElTIFdST05HIik7CgkJCgkJZm9yKGludCBpID0gMDsgaSA8IGFycltzb3VyY2VdLnNpemUoKTsgaSsrKQoJCXsKCQkJaW50IG5leHQgPSBhcnJbc291cmNlXS5nZXQoaSk7CgkJCWlmKGRlcHRoczFbbmV4dF0gPT0gLTEpCgkJCXsKCQkJCWRmczEobmV4dCwgZGVwKzEpOwoJCQl9CgkJfQoJfQoJCglwdWJsaWMgdm9pZCBkZnMyKGludCBzb3VyY2UsIGludCBkZXApCgl7CgkJaWYoZGVwdGhzMltzb3VyY2VdID09IC0xKSAKCQl7CgkJCWRlcHRoczJbc291cmNlXSA9IGRlcDsKCQl9CgkJZWxzZSByZXR1cm47CgkJCgkJZm9yKGludCBuZXh0IDogYXJyW3NvdXJjZV0pCgkJewoJCQlpZihkZXB0aHMyW25leHRdID09IC0xKQoJCQl7CgkJCQlkZnMyKG5leHQsIGRlcCsxKTsKCQkJfQoJCX0KCX0KCQoJcHVibGljIHZvaWQgY29tcCgpCgl7CgkJU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoU3lzdGVtLm91dCk7CgoJCWludCBuID0gc2MubmV4dEludCgpOwoJCQoJCWRlcHRoczEgPSBuZXcgaW50W25dOwoJCWRlcHRoczIgPSBuZXcgaW50W25dOwoKCQlBcnJheXMuZmlsbChkZXB0aHMxLCAtMTAwKTsKCQlBcnJheXMuZmlsbChkZXB0aHMyLCAtMTAwKTsKCQkKCQlhcnIgPSBuZXcgQXJyYXlMaXN0W25dOwoKCQlmb3IoaW50IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnJbaV0gPSBuZXcgQXJyYXlMaXN0PD4oKTsKCgkJZm9yKGludCBpID0gMDsgaSA8IG4tMTsgaSsrKQoJCXsKCQkJaW50IHUgPSBzYy5uZXh0SW50KCkgLSAxOwoJCQlpbnQgdiA9IHNjLm5leHRJbnQoKSAtIDE7CgkJCQoJCQlhcnJbdV0uYWRkKHYpOwoJCQlhcnJbdl0uYWRkKHUpOwoJCX0KCgkJZGZzMSgwLCAwKTsKCQkKCQlsb25nIG1heCA9IDA7CgkJaW50IG5ld24gPSAtMTsKCQlmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXsKCQkJaWYobWF4IDwgZGVwdGhzMVtpXSkKCQkJewoJCQkJbmV3biA9IGk7CgkJCQltYXggPSBkZXB0aHMxW2ldOwoJCQl9CgkJfQoJCQoJCXB3LnByaW50bG4obmV3bik7CgkJZm9yKGludCBpID0gMDsgaSA8IGRlcHRoczEubGVuZ3RoOyBpKyspIHB3LnByaW50bG4oZGVwdGhzMVtpXSk7CgkJCgkJLy8gZGZzMihuZXduLCAwKTsKCQkKCQltYXggPSAwOwoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlpZihtYXggPCBkZXB0aHMxW2ldKQoJCQl7CgkJCQltYXggPSBkZXB0aHMxW2ldOwoJCQl9CgkJfQoJCQoJCXB3LnByaW50bG4obWF4KTsKCQlwdy5jbG9zZSgpOwoJCXNjLmNsb3NlKCk7Cgl9Cn0K