#include<iostream>
#include<vector>
#include<map>
using namespace std;

vector<int>solve(vector<int>vec){
    vector<int>r;
    map<int,int>m;
    for(int i=0;i<vec.size();i++)
        m[vec[i]]++;
    for(int i=0;i<vec.size();i++)
        r.push_back(m[vec[i]]);
    return r;
}
int main(){
    int n,t,suc;
    while(cin>>n,n){
        vector<int>las,cur;
        while(n--){
            cin>>t;
            las.push_back(t);
        }
        t=0;
        while(1){
            cur=solve(las);
            suc=1;
            for(int i=0;i<cur.size();i++){
                if(cur[i]!=las[i]){
                    suc=0;
                    break;
                }
            }
            if(suc==1&&cur.size())break;
            for(int i=0;i<cur.size();i++)
                las[i]=cur[i];
            t++;
        }
        cout<<t<<endl;
        for(int i=0;i<cur.size()-1;i++)
            cout<<cur[i]<<" ";
        cout<<cur[cur.size()-1]<<endl;
    }
}