import std.stdio;
import std.algorithm;
import std.string;
import std.functional;
import std.array;
import std.conv;
import std.math;
import std.typecons;
import std.regex;
import std.range;

bool check(int[] a,int[] b){
    if(a.length == b.length){
	for(int i=0;i<a.length;i++){
	    if(a[i] != b[i]) return false;
	}
    }else return false;

    return true;
}

void main(){

    while(true){
	int n = readln().chomp().to!int;
	if(n == 0) break;
	int[] a,b;
	a = new int[n];
	b = new int[n];
	a = readln().split().to!(int[]);
	int ans;
	while(true){
	    for(int i=0;i<n;i++){
		int count = 0;
		for(int j=0;j<n;j++){
		    if(a[i] == a[j]) count++;
		}
		b[i] = count;
	    }
	    if(check(a,b)){
		writeln(ans);
		auto res = a.to!(string[]);
		res.join(" ").writeln();
		break;
	    }
	    swap(a,b);
	    ans++;
	}
    }
}