#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)2e5 + 100;
const int maxm = (int)1e6 + 100;
const int mod = (int)998244353;
const int P = (int)1e6 + 7;
const double pi = acos(-1.0);
int n, p[maxn];
vector<int> g[maxn];
bool ban[maxn];
int ans, lvl[maxn];
unordered_map<int, bool> was[maxn];
void dfs(int v, int par = -1) {
  vector<int> add;
  for (auto to : g[v]) {
    if (to == par) continue;
    lvl[to] = lvl[v] + 1;
    dfs(to, v);
    if (!ban[to]) add.push_back(to);
  }
  if (((int)(add).size()) == 1) {
    ans += 2;
    ban[v] = ban[add.back()] = 1;
    p[v] = add.back();
    p[add.back()] = v;
    return;
  }
  for (int i = (0); i <= (((int)(add).size()) - 1); ++i) {
    if (!i) {
      p[v] = add[i];
      p[add[i]] = add[i + 1];
      ans += 3;
      continue;
    }
    if (i == ((int)(add).size()) - 1) {
      p[add[i]] = v;
      ans++;
      continue;
    }
    p[add[i]] = add[i + 1];
    ans += 2;
  }
  for (auto x : add) ban[x] = 1;
  ban[v] = ((int)(add).size());
}
int a[maxn], mn = mod, first[maxn];
void solve(int root) {
  for (int i = (1); i <= (n); ++i) ban[i] = p[i] = 0;
  lvl[root] = 0;
  ans = 0;
  dfs(root);
  for (int i = (1); i <= (n); ++i) first[p[i]] = i;
  if (!ban[root]) {
    int res = mod, go;
    for (int i = (1); i <= (n); ++i) {
      if (i == root) continue;
      int cur = ans - (was[i][first[i]] ? 1 : 2) + lvl[i] + lvl[first[i]];
      if (res > cur) res = cur, go = i;
    }
    p[first[go]] = root;
    p[root] = go;
    ans = res;
  }
  if (mn > ans) {
    mn = ans;
    for (int i = (1); i <= (n); ++i) a[i] = p[i];
  }
}
void solve() {
  scanf("%d", &n);
  for (int i = (1); i <= (n - 1); ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
    was[u][v] = was[v][u] = 1;
  }
  solve(1);
  printf("%d\n", mn);
  for (int i = (1); i <= (n); ++i) printf("%d ", a[i]);
  for (int i = (1); i <= (n); ++i) assert(a[i] != i);
  sort(a + 1, a + n + 1);
  for (int i = (1); i <= (n); ++i) assert(a[i] == i);
}
int main() {
  int t = 1;
  while (t--) solve();
}
