#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<string>
#include<algorithm>
#include<queue>

using namespace std;

int ans;
vector<int> ANS;

void func(vector<int> s,int N){
	vector<int> copy;
	for(int i = 0; i < s.size(); i++){
		copy.push_back(0);
	}
	for(int i = 0; i < s.size(); i++){
		for(int j = 0; j < s.size(); j++){
			if(s[i] == s[j]){
				copy[i]++;
			}
		}
	}
	if(copy==s){
		ans = N;
		ANS = copy;
		return;
	}
	func(copy,N+1);
}
				


int main(){
	int n;
	
	while(scanf("%d", &n) && n){
		vector<int> S;
		int temp;
		
		for(int i = 0 ; i < n ;i++){
			scanf("%d", &temp);
			S.push_back(temp);
		}
		func(S,0);
		printf("%d\n",ans);
		for(int i = 0; i < S.size(); i++){
			printf("%d",ANS[i]);
			if(i != S.size()-1)printf(" ");
		}puts("");
		
	}
	return 0;
}