#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, cnt, sz, col[N];
vector<int> vec[N];
void readInput() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    vec[x - 1].push_back(i);
  }
}
void solve() {
  cnt = vec[0].size();
  for (int i = 0; i < cnt; i++)
    for (int j = 0; !vec[j].empty(); j++)
      col[vec[j].back()] = i, vec[j].pop_back(), sz++;
}
void writeOutput() {
  if (sz < n) {
    cout << "-1\n";
    return;
  }
  cout << cnt << endl;
  for (int i = 0; i < n; i++) cout << col[i] + 1 << ' ';
}
int main() {
  ios_base ::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  readInput(), solve(), writeOutput();
  return 0;
}
