#include <iostream>
using namespace std;


void hind(int in[], int out[], int length) {
  int temp[length];
  fill(&temp[0], &temp[length], 0);
  for(int i = 0; i < length; i++) {
    for(int j = 0; j < length; j++) {
      if(in[j] == in[i]) {
	temp[j]++;
      }
    }
  }
  for(int i = 0; i < length; i++) {
    out[i] = temp[i];
  }
}

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

void dainyu(int a[], int b[], int length) {
  for(int i = 0; i < length; i++) {
    a[i] = b[i];
  }
}

int main() {
  while(1) {
    int n;
    cin >> n;
    if(n == 0) break;

    int data[n];
    for(int i = 0; i < n; i++) {
      cin >> data[i];
    }

    int cnt;
    int data2[n];
    dainyu(data2, data, n);
    for(cnt = 0; !(cnt >= 1 && isEqual(data, data2, n)); cnt++) {
      dainyu(data, data2, n);
      hind(data, data2, n);
    }
    cout << cnt-1 << endl;
    for(int i = 0; i < n; i++) {
      if(i != 0) cout << ' ';
      cout << data2[i];
    }
    cout << endl;
  }
}