#include <iostream>
#include <fstream>
using namespace std;
int n;
int bit[30002];
int v[30002] , rez[30002];
int get(int poz) {
int ans = 0;
for (int i = poz ; i > 0; i -= (i & -i)) {
ans += bit[i];
}
return ans;
}
void update(int poz , int val) {
for (int i = poz ; i <= n; i += (i & -i)) {
bit[i] += val;
}
}
int bs(int index) {
int left = 1, right = n, poz = 0;
while (left <= right) {
int mid = (left + right) >> 1;
int cnt = get(mid);
if (cnt >= index) {
poz = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return poz;
}
int main() {
ifstream fin("schi.in");
ofstream fout("schi.out");
fin >> n;
for (int i = 1; i <= n; i++) {
fin >> v[i];
update(i, 1);
}
for (int i = n; i >= 1; i--) {
int pos = bs(v[i]);
rez[pos] = i;
update(pos, -1);
}
for (int i = 1; i <= n; i++)
fout << rez[i] << "\n";
return 0;
}