#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] << " ";
    }
}