#include <bits/stdc++.h>
using namespace std;
bool sortbysec(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.second < b.second);
}
long long i, j;
long long prime_flag[1000000];
void calculate_prime_flag() {
  prime_flag[0] = prime_flag[1] = 1;
  for (i = 2; i < 1000000; i++) {
    if (prime_flag[i] == 0) {
      for (j = i * i; j < 1000000; j += i) {
        prime_flag[j] = 1;
      }
    }
  }
}
int LPS(char *str) {
  int n = strlen(str);
  int i, j, cl;
  int l[n][n];
  for (i = 0; i < n; i++) l[i][i] = 1;
  for (cl = 2; cl <= n; cl++) {
    for (i = 0; i < n - cl + 1; i++) {
      j = i + cl - 1;
      if (str[i] == str[j] && cl == 2)
        l[i][j] = 2;
      else if (str[i] == str[j])
        l[i][j] = l[i + 1][j - 1] + 2;
      else
        l[i][j] = max(l[i][j - 1], l[i + 1][j]);
    }
  }
  return l[0][n - 1];
}
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int findGCD(int arr[], int n) {
  int result = arr[0];
  for (int i = 1; i < n; i++) result = gcd(arr[i], result);
  return result;
}
bool prime(int s) {
  for (int i = 2; i <= sqrt(s); i++) {
    if ((s % i) != 0)
      return true;
    else
      return false;
  }
}
int myXOR(int x, int y) {
  int res = 0;
  for (int i = 31; i >= 0; i--) {
    bool b1 = x & (1 << i);
    bool b2 = y & (1 << i);
    bool xoredBit = (b1 & b2) ? 0 : (b1 | b2);
    res <<= 1;
    res |= xoredBit;
  }
  return res;
}
void SieveOfEratosthenes(int z, int n) {
  bool prime[n + 1];
  memset(prime, true, sizeof(prime));
  for (int p = 2; p * p <= n; p++) {
    if (prime[p] == true) {
      for (int i = p * p; i <= n; i += p) prime[i] = false;
    }
  }
  for (int p = z; p <= n; p++)
    if (prime[p]) cout << p << " ";
}
int main() {
  long long n;
  cin >> n;
  long long x;
  vector<pair<long long, long long>> a;
  for (int i = 0; i < n; i++) {
    cin >> x;
    a.push_back({x, i});
  }
  sort(a.begin(), a.end());
  map<long long, long long> mp;
  for (int i = 0; i < n; i++) {
    if (mp[a[i].first] == 0)
      mp[a[i].first]++;
    else {
      a[i].first = a[i - 1].first + 1;
      mp[a[i].first]++;
    }
  }
  sort(a.begin(), a.end(), sortbysec);
  for (int i = 0; i < n; i++) cout << a[i].first << ' ';
  return 0;
}
