#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<vector<int>> graph(n);
for (int i = 0; i < n - 1; i++) {
int x, y;
cin >> x >> y;
x--, y--;
graph[x].push_back(y);
graph[y].push_back(x);
}
if (graph[0].size() <= 2) {
cout << "Tree can stay rooted at the current root! 1\n";
return 0;
}
for (int i = 1; i < n; i++) {
if (graph[i].size() <= 2) {
cout << "Tree should be rerooted to " << i + 1 << "\n";
return 0;
}
}
cout << "No valid root exists\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBncmFwaChuKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIHgtLSwgeS0tOwogICAgICAgIGdyYXBoW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBncmFwaFt5XS5wdXNoX2JhY2soeCk7CiAgICB9CgogICAgaWYgKGdyYXBoWzBdLnNpemUoKSA8PSAyKSB7CiAgICAgICAgY291dCA8PCAiVHJlZSBjYW4gc3RheSByb290ZWQgYXQgdGhlIGN1cnJlbnQgcm9vdCEgMVxuIjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChncmFwaFtpXS5zaXplKCkgPD0gMikgewogICAgICAgICAgICBjb3V0IDw8ICJUcmVlIHNob3VsZCBiZSByZXJvb3RlZCB0byAiIDw8IGkgKyAxIDw8ICJcbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8ICJObyB2YWxpZCByb290IGV4aXN0c1xuIjsKICAgIHJldHVybiAwOwp9Cg==