#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 5;
const long long oo = 1e18 + 7, mod = 1e9 + 7;
long long n, a[N];
long long sz[N];
vector<long long> Adj[N];
long long ans, cen = -1;
void dfs(long long u, long long p) {
  sz[u] = 1;
  for (auto v : Adj[u]) {
    if (v == p) continue;
    dfs(v, u);
    sz[u] += sz[v];
  }
  ans += min(sz[u], n - sz[u]);
  bool ck = 1;
  for (auto v : Adj[u]) ck &= (sz[v] * 2 <= n);
  ck &= ((n - sz[u]) * 2 <= n);
  if (ck) cen = u;
}
vector<long long> vc[N];
long long p[N];
void dfs2(long long u, long long p, long long root) {
  vc[root].push_back(u);
  for (auto v : Adj[u]) {
    if (v == p) continue;
    dfs2(v, u, root);
  }
}
void process() {
  cin >> n;
  for (long long i = 1; i < n; i++) {
    long long x, y;
    cin >> x >> y;
    Adj[x].push_back(y);
    Adj[y].push_back(x);
  }
  dfs(1, 1);
  for (auto it : Adj[cen]) dfs2(it, cen, it);
  priority_queue<pair<long long, long long>, vector<pair<long long, long long>>>
      pq;
  for (long long i = 1; i <= n; i++) {
    if (!vc[i].size()) continue;
    pq.push({vc[i].size(), i});
  }
  for (long long i = 1; i <= (n - 1) / 2; i++) {
    pair<long long, long long> temp1 = pq.top();
    pq.pop();
    pair<long long, long long> temp2 = pq.top();
    pq.pop();
    assert(vc[temp1.second].size() && vc[temp2.second].size());
    long long tmp1 = vc[temp1.second].back(), tmp2 = vc[temp2.second].back();
    vc[temp1.second].pop_back();
    vc[temp2.second].pop_back();
    p[tmp1] = tmp2;
    p[tmp2] = tmp1;
    pq.push({temp1.first - 1, temp1.second});
    pq.push({temp2.first - 1, temp2.second});
  }
  if (!(n & 1)) {
    for (long long i = 1; i <= n; i++) {
      if (!p[i] && i != cen) {
        p[cen] = i;
        p[i] = cen;
        break;
      }
    }
  } else {
    if (cen != 1) {
      long long x = p[1];
      p[1] = cen;
      p[cen] = x;
    } else {
      long long x = p[2];
      p[2] = cen;
      p[cen] = x;
    }
  }
  cout << ans * 2 << "\n";
  for (long long i = 1; i <= n; i++) cout << p[i] << " ";
}
signed main() {
  ios_base::sync_with_stdio(0);
  process();
}
