#include <iostream>
#include <fstream>
#include <typeinfo>
#include <vector>
#include <cmath>
#include <map>
#include <string>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <iomanip>
#include <cctype>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef pair<int,P> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const double pi=acos(-1);
const double eps=1e-8;

int n,c;
vi num,tmp;

void func(){
	c++;
	for(int i=0;i<n;i++){
		int x=0;
		for(int j=0;j<n;j++){
			if(num[i]==num[j]) x++;
		}
		tmp[i]=x;
	}
}

int main(){
	while(1){
		cin>>n;
		if(!n) break;
		num=vi(n);
		tmp=vi(n);
		for(int i=0;i<n;i++) cin>>num[i];
		c=0;
		while(1){
			func();
			int ctmp=0;
			for(int i=0;i<n;i++){
				if(num[i]==tmp[i]) ctmp++;
			}
			if(ctmp==n) break;
			for(int i=0;i<n;i++) num[i]=tmp[i];
		}
		cout<<c-1<<endl;
		for(int i=0;i<n-1;i++) cout<<num[i]<<' ';
		cout<<num[n-1]<<endl;
	}
}