#include <bits/stdc++.h>   using namespace std;   vector<long long> adj[200005];   vector<long long> vis(200005);   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     long long i, j, k = 0, n, t = 1, m, l = 0;     for (i = 0; i < 200005; i++) vis[i] = 0;     while (t--) {       cin >> n;       for (i = 0; i < n; i++) {         cin >> l >> m;         adj[m].push_back(l);         adj[l].push_back(m);       }       long long d[n + 1];       for (i = 0; i <= n; i++) d[i] = 100000000000;       queue<long long> q;       d[1] = 0;       q.push(1);       vis[1] = 1;       long long farthest = -1;       while (!q.empty()) {         long long s = q.front();         q.pop();         for (auto u : adj[s]) {           if (vis[u]) continue;           vis[u] = 1;           d[u] = d[s] + 1;           farthest = u;           q.push(u);         }       }       long long par[n + 1];       for (i = 0; i <= n; i++) par[i] = -1;       for (i = 0; i <= n; i++) {         d[i] = 100000000000;         vis[i] = 0;       }       d[farthest] = 0;       q.push(farthest);       vis[farthest] = 1;       long long farthest1 = -1;       while (!q.empty()) {         long long s = q.front();         q.pop();         for (auto u : adj[s]) {           if (vis[u]) continue;           vis[u] = 1;           d[u] = d[s] + 1;           par[u] = s;           farthest1 = u;           q.push(u);         }       }       for (i = 0; i <= n; i++) vis[i] = 0;       long long node = farthest1;       while (node != farthest) {         vis[node] = 1;         node = par[node];       }       vis[node] = 1;       long long ans = d[farthest1];       for (i = 1; i <= n; i++) {         d[i] = 0;         if (vis[i] == 1) {           q.push(i);         }       }       long long farthest2 = -1;       while (!q.empty()) {         long long s = q.front();         q.pop();         for (auto u : adj[s]) {           if (vis[u]) continue;           vis[u] = 1;           d[u] = d[s] + 1;           par[u] = s;           farthest2 = u;           q.push(u);         }       }       if (farthest2 != -1)         ans += d[farthest2];       else {         for (i = 1; i <= n; i++) {           if (i != farthest1 && i != farthest) {             farthest2 = i;             break;           }         }       }       cout << ans <<   n ;       cout << farthest2 <<     << farthest1 <<     << farthest <<   n ;     }     return 0;   }   