#include <iostream>
#include <vector>
using namespace std;
vector<int> adj[200005];
int daxet[200005], p[200005], mx, color[200005];
int n;
void dfs(int v){
//cout << v << " ";
daxet[v] = 1;
int cl = 1;
for (int i = 0; i < adj[v].size(); i++){
if (!daxet[adj[v][i]]){
p[adj[v][i]] = v;
while(cl == color[v] || cl == color[p[v]]){
cl++;
}
color[adj[v][i]] = cl%(mx+1);
cl++;
dfs(adj[v][i]);
}
}
}
int main(){
cin >> n;
int x, y;
for (int i = 1; i <= n-1; i++){
cin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
for (int i = 1; i <= n; i++){
mx = max((int)adj[i].size(), mx);
}
mx++;
color[1] = 1;
dfs(1);
cout << mx << endl;
for (int i = 1; i <= n; i++){
cout << color[i] << " ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gYWRqWzIwMDAwNV07CmludCBkYXhldFsyMDAwMDVdLCBwWzIwMDAwNV0sIG14LCBjb2xvclsyMDAwMDVdOwppbnQgbjsKCnZvaWQgZGZzKGludCB2KXsKICAgIC8vY291dCA8PCB2IDw8ICIgIjsKICAgIGRheGV0W3ZdID0gMTsKICAgIGludCBjbCA9IDE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGFkalt2XS5zaXplKCk7IGkrKyl7CiAgICAgICAgaWYgKCFkYXhldFthZGpbdl1baV1dKXsKICAgICAgICAJcFthZGpbdl1baV1dID0gdjsKCQkJd2hpbGUoY2wgPT0gY29sb3Jbdl0gfHwgY2wgPT0gY29sb3JbcFt2XV0pewoJCQkJY2wrKzsKCQkJfQogICAgICAgICAgICBjb2xvclthZGpbdl1baV1dID0gY2wlKG14KzEpOwogICAgICAgICAgICBjbCsrOwogICAgICAgICAgICBkZnMoYWRqW3ZdW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBjaW4gPj4gbjsKICAgIGludCB4LCB5OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbi0xOyBpKyspewogICAgICAgIGNpbiA+PiB4ID4+IHk7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQlteCA9IG1heCgoaW50KWFkaltpXS5zaXplKCksIG14KTsKCX0KCW14Kys7Cgljb2xvclsxXSA9IDE7CiAgICBkZnMoMSk7CiAgICBjb3V0IDw8IG14IDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGNvdXQgPDwgY29sb3JbaV0gPDwgIiAiOwogICAgfQp9