#include <bits/stdc++.h>
using namespace std;
using namespace std::chrono;
bool SoSec(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.second < b.second);
}
void vw(vector<vector<int>> v) {
  cout << (v.size()) << " is: " << endl;
  for (vector<int> B : v) {
    for (int x : B) {
      cout << x << " ";
    }
    cout << endl;
  }
  cout << endl;
}
void v23(vector<int> v) {
  cout << (v.size()) << " is: " << endl;
  for (int i : v) {
    cout << i << "	";
  }
  cout << endl;
}
long long Sqrt(long long x) {
  if (x == 0 || x == 1) return x;
  long long start = 1, end = x, ans;
  while (start <= end) {
    long long mid = (start + end) / 2;
    if (mid * mid == x) return mid;
    if (mid * mid < x) {
      start = mid + 1;
      ans = mid;
    } else
      end = mid - 1;
  }
  return ans;
}
vector<vector<int>> v;
long long const MAX = 2147483647, REALMAX = 9223372036854775806;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n;
  cin >> n;
  vector<pair<int, int>> v(n);
  for (int i = 0; i < n; i++) {
    cin >> v[i].first;
    v[i].second = i + 1;
  }
  sort(v.begin(), v.end());
  for (int i = 1; i < n; i++) {
    if (v[i].first <= v[i - 1].first) v[i].first = v[i - 1].first + 1;
  }
  sort(v.begin(), v.end(), SoSec);
  for (int i = 0; i < n; i++) {
    cout << v[i].first << "  ";
  }
}
