#include <bits/stdc++.h>
using namespace std;
const int N = 1'000'007;
int T[4 * N];
void add(int i, int d, int id, int tl, int tr){
T[id] += d;
if(tl != tr){
int m = (tl + tr) / 2;
if(i <= m){
add(i, d, 2 * id, tl, m);
} else{
add(i, d, 2 * id + 1, m + 1, tr);
}
}
}
int find(int x, int id, int tl, int tr){
if(tl == tr){
if(x >= T[id])
return 1;
return 0;
}
int m = (tl + tr) / 2;
if(T[2 * id] > x){
return find(x, id * 2, tl, m);
} else {
return (m - tl + 1) +
find(x - T[2 * id], 2 * id + 1, m + 1, tr);
}
}
int main()
{
int n;
cin >> n;
vector<long long> a(n + 1);
a[0] = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
for(int i = 0; i < n; i++){
add(i, 1, 1, 0, n - 1);
}
vector<int> p(n + 1);
for(int i = n; i >= 1; i--){
int diff = a[i] - a[i - 1];
int y = (i - 1) - diff;
int pos = find(y, 1, 0, n - 1);
p[i] = pos + 1;
add(pos, -1, 1, 0, n - 1);
}
for(int i = 1; i <= n; i++){
cout << p[i] << " ";
}
cout << endl;
return 0;
}