#include <bits/stdc++.h>
using namespace std;
const bool testcases = false;
int64_t seed;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline int64_t rnd(int64_t l = 0, int64_t r = INT_MAX) {
  return uniform_int_distribution<int64_t>(l, r)(rng);
}
inline bool in_range(int64_t a, int64_t l, int64_t r) {
  return (a >= l && a <= r);
}
template <typename H, typename... T>
void inp(H &head) {
  cin >> head;
}
template <typename H, typename... T>
void inp(H &head, T &...tail) {
  cin >> head;
  inp(tail...);
}
template <typename T>
bool isPrime(T n) {
  for (T i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return n >= 2;
}
template <typename T>
inline istream &operator>>(istream &in, vector<T> &a) {
  for (T &x : a) in >> x;
  return in;
}
template <typename T, typename U>
inline istream &operator>>(istream &in, pair<T, U> &a) {
  in >> a.first >> a.second;
  return in;
}
void solve();
void fast_io();
int32_t main(int32_t argc, char **argv) {
  fast_io();
  int64_t TC = 1;
  if (testcases) cin >> TC;
  for (int64_t tc = 1; tc <= TC; tc++) solve(), 108;
  return 0;
}
vector<int64_t> deg;
vector<vector<int64_t> > adj;
void add_edge(vector<vector<int64_t> > &a, int64_t u, int64_t v, bool dir = 0) {
  a[u].push_back(v);
  if (!dir) a[v].push_back(u);
}
void clearAll(int64_t n) {
  adj.clear();
  adj.resize(n + 1);
  deg.clear();
  deg.assign(n + 1, 0);
}
int64_t M;
vector<int64_t> ans;
void dfs(int64_t u = 1, int64_t p = 0) {
  int64_t c = 1;
  for (int64_t v : adj[u]) {
    if (v != p) {
      while (ans[u] == c || ans[p] == c) c++;
      ans[v] = c;
      dfs(v, u);
      c++;
    }
  }
}
void solve() {
  int64_t n;
  cin >> n;
  int64_t u, v;
  clearAll(n);
  for (int64_t i = 1; i < n; i++) {
    cin >> u >> v;
    deg[u]++;
    deg[v]++;
    add_edge(adj, u, v);
  }
  M = *max_element(deg.begin(), deg.end()) + 1;
  ans = vector<int64_t>(n + 1, 1);
  dfs();
  cout << M << '\n';
  for (int64_t i = 1; i <= n; i++) cout << ans[i] << " ";
  cout << '\n';
}
void fast_io() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
}
