#include <bits/stdc++.h>
using namespace std;
int n, a, x, y, i, j;
bool mark[300003];
vector<pair<int, int> > v;
vector<pair<int, int> >::iterator it;
vector<pair<int, int> > ans;
vector<pair<int, int> > ans0;
int main() {
  scanf("%d", &n);
  if (n == 1) {
    scanf("%d", &a);
    printf("%d\n", a);
    return 0;
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &a);
    v.push_back(make_pair(a, i));
  }
  sort(v.begin(), v.end());
  for (i = 1; i < n; i++) {
    if (v[i].first == v[i - 1].first) mark[i] = true;
  }
  x = v[0].first + 1;
  for (i = 0; i < n; i++) {
    if (mark[i]) {
      x = max(x, v[i].first);
      it = lower_bound(v.begin(), v.end(), make_pair(x, 0));
      if (it == v.end()) {
        ans.push_back(make_pair(x, v[i].second));
        x++;
      } else {
        while ((*it).first == x) {
          x++;
          it = lower_bound(v.begin(), v.end(), make_pair(x, 0));
          if (it == v.end()) {
            ans.push_back(make_pair(x, v[i].second));
            x++;
            break;
          }
        }
        if (it != v.end()) {
          ans.push_back(make_pair(x, v[i].second));
          x++;
        }
      }
    } else {
      ans.push_back(v[i]);
    }
  }
  for (i = 0; i < n; i++) {
    swap(ans[i].second, ans[i].first);
  }
  sort(ans.begin(), ans.end());
  for (i = 0; i < n; i++) {
    printf("%d ", ans[i].second);
  }
  printf("\n");
  return 0;
}
