#include #include #include using namespace std; const int MAXN = 1e5 + 123; vector g[MAXN]; vector current_path; vector diameter; int lcp = 0; void dfs(int v, int p = -1) { current_path.push_back(v); for (int u : g[v]) { if (u != p) { dfs(u, v); } } if (diameter.size() < current_path.size()) { diameter.resize(current_path.size()); copy(current_path.begin() + lcp, current_path.end(), diameter.begin() + lcp); lcp = diameter.size(); } current_path.pop_back(); lcp = max(0, lcp - 1); } int main() { int n; cin >> n; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; g[a-1].push_back(b-1); g[b-1].push_back(a-1); } dfs(0); dfs(diameter.back()); for (int i : diameter) { cout << i << " "; } cout << endl; }