#include <bits/stdc++.h>
using namespace std;
long long n;
vector<long long> v[200001];
long long dist[200001];
long long dist1[200001];
long long bfs(long long x) {
  queue<long long> q;
  q.push(x);
  dist[x] = 0;
  long long vis[n + 1];
  for (int i = 0; i < n + 1; ++i) {
    vis[i] = 0;
  }
  while (!q.empty()) {
    long long y = q.front();
    q.pop();
    if (!vis[y]) {
      vis[y] = 1;
      for (auto i : v[y]) {
        if (!vis[i]) {
          q.push(i);
          dist[i] = dist[y] + 1;
        }
      }
    }
  }
  long long max = dist[1], ma = 1;
  for (int i = 1; i < n + 1; ++i) {
    if (dist[i] > max) {
      ma = i;
      max = dist[i];
    }
  }
  return ma;
}
long long bfs1(long long x) {
  queue<long long> q;
  q.push(x);
  dist1[x] = 0;
  long long vis[n + 1];
  for (int i = 0; i < n + 1; ++i) {
    vis[i] = 0;
  }
  while (!q.empty()) {
    long long y = q.front();
    q.pop();
    if (!vis[y]) {
      vis[y] = 1;
      for (auto i : v[y]) {
        if (!vis[i]) {
          q.push(i);
          dist1[i] = dist1[y] + 1;
        }
      }
    }
  }
  long long max = dist1[1], ma = 1;
  for (int i = 1; i < n + 1; ++i) {
    if (dist1[i] > max) {
      ma = i;
      max = dist1[i];
    }
  }
  return ma;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long x, y;
  cin >> n;
  for (int i = 0; i < n - 1; ++i) {
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  vector<long long> v1;
  for (int i = 1; i < n + 1; ++i) {
    if (v[i].size() == 1) v1.push_back(i);
  }
  x = bfs(1);
  for (int i = 0; i < n + 1; ++i) {
    dist[i] = 0;
  }
  y = bfs(x);
  long long z;
  z = bfs1(y);
  long long c = 0, b = 0;
  for (int i = 0; i < v1.size(); ++i) {
    z = dist[v1[i]] + dist1[v1[i]] - dist[y];
    z /= 2;
    if (z > c) {
      c = z;
      b = v1[i];
    }
  }
  if (b == 0) {
    for (int i = 1; i < n + 1; ++i) {
      if (i != x && i != y) {
        b = i;
        break;
      }
    }
  }
  cout << dist[y] + c << endl;
  cout << x << " " << y << " " << b;
  return 0;
}
