#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int ans[maxn], num[maxn];
pair<int, int> pr[maxn];
int main() {
  int n, i, j, a, mx;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> a;
    pr[i] = make_pair(a, i + 1);
    num[a]++;
  }
  sort(pr, pr + n);
  for (i = 2; i <= 100000; i++)
    if (num[i] > num[i - 1]) {
      printf("-1");
      return 0;
    }
  mx = 0;
  for (i = 0; i < n; i += j) {
    for (j = 0; i + j < n && pr[i + j].first == pr[i].first; j++)
      ans[pr[i + j].second] = j + 1;
    if (j > mx) mx = j;
  }
  cout << mx << endl;
  for (i = 1; i <= n; i++) cout << ans[i] << " ";
}
