//修改数组
//存在链式的关系,且每下一次次真正要找的数都比找到的数多1
//并查集 每次都存储下一次要找到的点
#include<bits/stdc++.h>
using namespace std;
const int N = 1010010; //极限情况下每个数都是最大的时候相加
int n;
int arr[N];
int p[N];
int find(int x)
{
if(p[x]!=x) p[x]=find(p[x]);
return p[x];
}
int main()
{
cin>>n;
for(int i=1;i<=N;i++) p[i]=i;
for(int i=1;i<=n;i++) scanf("%d",&arr[i]);
for(int i=1;i<=n;i++)
{
int fa=find(arr[i]);
printf("%d ",fa);
p[fa]=fa+1;
}
}