#include <bits/stdc++.h>
typedef struct {
  int a;
  int b;
} k;
int cmp(const void *a, const void *b) { return (*(k *)a).a - (*(k *)b).a; }
int cmp1(const void *a, const void *b) {
  return (*(k *)a).b > (*(k *)b).b ? 1 : -1;
}
k name[300010];
int main() {
  int n, i;
  int set[300010];
  while (scanf("%d", &n) != EOF) {
    for (i = 0; i < n; i++) {
      scanf("%d", &name[i].a);
      ;
      name[i].b = i + 1;
    }
    qsort(name, n, sizeof(name[0]), cmp);
    set[name[0].b] = name[0].a;
    for (i = 1; i < n; i++) {
      if (name[i].a <= name[i - 1].a) name[i].a = name[i - 1].a + 1;
      set[name[i].b] = name[i].a;
    }
    for (i = 1; i < n; i++) {
      printf("%d ", set[i]);
    }
    printf("%d\n", set[i]);
  }
  return 0;
}
