#include <bits/stdc++.h>
using namespace std;
int main() {
  void solution();
  solution();
  return 0;
}
struct item {
  int v;
  int i;
};
bool operator<(item a, item b) { return a.v < b.v; }
const int maxn = 200000;
item a[maxn];
int c[maxn];
void solution() {
  int n;
  scanf("%i", &n);
  set<int> s;
  bool bad = false;
  for (int i = 0; i < n; i++) {
    scanf("%i", &a[i].v);
    a[i].v += i;
    a[i].i = i;
    if (s.find(a[i].v) != s.end()) {
      bad = true;
    }
    s.insert(a[i].v);
  }
  if (!bad) {
    sort(a, a + n);
    for (int i = 0; i < n; i++) {
      c[i] = a[i].v - i;
      if (c[i] < 0) {
        bad = true;
      }
    }
  }
  if (!bad) {
    for (int i = 0; i < n; i++) {
      printf("%i ", c[i]);
    }
  }
  if (bad) {
    printf(":(");
  }
  printf("\n");
}
