https://www.lanqiao.cn/courses/31016/learning/?id=1898141&compatibility=false
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> PII;
typedef vector<long long> VI;
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
#define pb(i) push_back(i)
#define int long long
#define INF 0x3f3f3f3f
#define oz 998244353
#define endl '\n'
#define N 200010
const int mod = 1e9 + 7;
//
//int p[N],si[N];
//int find(int x) {
// if (x == p[x])return p[x];
// p[x] = find(p[x]);
// return p[x];
//}
//size[find(b)] += size[find(a)];
//p[find(a)] = find(b);
VI p(2000010);
int find(int x) {
if (x == p[x])return x;
p[x] = find(p[x]);
return p[x];
}
void solve() {
int n;
cin >> n;
rep(i, 0, 2000009)p[i] = i;
while (n --) {
int x;
cin >> x;
int t = find(x);
cout << t << " ";
p[find(t)] = find(t + 1); // 自动刷新每个根节点下次没有出现的最小数字
}
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T = 1;
// cin >> T;
while (T --)
solve();
return 0;
}