#include <bits/stdc++.h>
using namespace std;
long long int visited[200005], marked[200005], parent[200005], f1, f2, f3,
    m = 0, ans = 0;
vector<long long int> adj[200005];
void dfs(long long int v, long long int d, long long int* g) {
  visited[v] = 1;
  if (m < d) {
    m = d;
    *g = v;
  }
  for (auto a : adj[v]) {
    if (!visited[a]) {
      parent[a] = v;
      dfs(a, d + 1, g);
    }
  }
}
void dfs2(long long int v, long long int d, long long int* g) {
  visited[v] = 1;
  if (m < d) {
    m = d;
    *g = v;
  }
  for (auto a : adj[v]) {
    if (!visited[a] && !marked[a]) {
      dfs2(a, d + 1, g);
    }
  }
}
long long int func(vector<long long int>& v) {
  long long int n = v.size();
  long long int a[n];
  for (long long int i = 0; i < n; i++) a[i] = v[i];
  sort(a, a + n);
  return a[n - 1] + a[n - 2];
}
pair<long long int, long long int> funcP(vector<long long int>& v) {
  long long int n = v.size();
  long long int a[n];
  for (long long int i = 0; i < n; i++) a[i] = v[i];
  sort(a, a + n);
  return {a[n - 1], a[n - 2]};
}
void solve() {
  long long int n, ans = 0;
  cin >> n;
  long long int u, v;
  for (long long int i = 0; i < n - 1; i++) {
    cin >> u >> v;
    u--, v--;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  m = 0;
  dfs(0, 0, &f1);
  m = 0;
  memset(parent, 0, sizeof parent);
  memset(visited, 0, sizeof visited);
  parent[f1] = f1;
  dfs(f1, 0, &f2);
  ans += m;
  u = f2;
  m = 0;
  while (parent[u] != u) marked[u] = 1, u = parent[u];
  marked[f1] = 1;
  memset(visited, 0, sizeof visited);
  for (long long int i = 0; i < n; i++)
    if (marked[i]) dfs2(i, 0, &f3);
  ans += m;
  if (m == 0) {
    for (long long int i = 0; i < n; i++) {
      if (i != f1 && i != f2) {
        f3 = i;
        break;
      }
    }
  }
  cout << ans << "\n";
  cout << f1 + 1 << ' ' << f2 + 1 << ' ' << f3 + 1;
}
int32_t main() {
  {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
  }
  long long int t = 1;
  for (long long int tno = 1; tno < t + 1; tno++) {
    solve();
  }
  return 0;
}
