#include <bits/stdc++.h>
using namespace std;
int a[101000];
int kol[101000];
int main() {
  memset(kol, 0, sizeof(kol));
  int n, i;
  scanf("%d", &n);
  int max = 0;
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    kol[a[i]]++;
    if (a[i] > max) max = a[i];
  }
  bool flag = true;
  for (i = max; i > 1; i--)
    if (kol[i - 1] < kol[i]) {
      flag = false;
      break;
    }
  if (flag) {
    printf("%d\n", kol[1]);
    for (i = 1; i <= n; i++) {
      printf("%d ", kol[a[i]]);
      kol[a[i]]--;
    }
  } else
    printf("-1\n");
  return 0;
}
