#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 5;
vector<long long> adj[N];
long long cost = 0;
vector<long long> a;
map<long long, long long> home;
pair<long long, long long> dfs(long long u, long long p) {
  long long cost = 0;
  vector<long long> v;
  for (auto x : adj[u]) {
    if (x != p) {
      pair<long long, long long> ans = dfs(x, u);
      cost += ans.first;
      if (!ans.second) v.push_back(x);
    }
  }
  if (v.size() == 0) {
    if (u != 1) return {cost, 0};
    long long child = adj[u][0];
    long long newowner = home[child];
    cost += 2;
    a[newowner] = u;
    home[u] = newowner;
    a[u] = child;
    home[child] = u;
    return {cost, 1};
  }
  long long m = v.size();
  cost += 2 * m;
  a[u] = v[0];
  home[v[0]] = a[u];
  for (long long i = 0; i < m - 1; i++) {
    a[v[i]] = v[i + 1];
    home[v[i + 1]] = a[v[i]];
  }
  a[v.back()] = u;
  home[u] = v.back();
  return {cost, 1};
}
signed main() {
  ios_base::sync_with_stdio(0), cin.tie(0);
  long long n;
  cin >> n;
  a.resize(n + 1);
  for (long long i = 0; i < n - 1; i++) {
    long long u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  pair<long long, long long> ans = dfs(1, -1);
  cout << ans.first << '\n';
  for (long long i = 1; i <= n; i++) cout << a[i] << " ";
}
