#include <iostream>
#include <fstream>
#include <vector>
#define lsb(x) (x & (-x))
using namespace std;
struct Fenwick {
vector<int> aib;
Fenwick(int n) {
aib.resize(n + 1);
}
void update(int i, int val) {
for (; i < aib.size(); i += lsb(i)) {
aib[i] += val;
}
}
int bin_search(int val) {
int ans = 0;
int sum = 0;
for (int pas = (1 << 15); pas > 0; pas /= 2) {
if (ans + pas >= aib.size()) { continue; }
if (sum + aib[ans + pas] < val) {
ans += pas;
sum += aib[ans];
}
}
return ans;
}
};
int main() {
ifstream cin("schi.in");
ofstream cout("schi.out");
int n; cin >> n;
vector<int> v(n);
for (auto& i : v) {
cin >> i;
}
Fenwick ft(n);
for (int i = 1; i <= n; i++) {
ft.update(i, 1);
}
vector<int> ans(n);
for (int i = n - 1; i >= 0; i--) {
int real_place = ft.bin_search(v[i]);
ans[real_place] = i + 1;
ft.update(real_place + 1, -1);
}
for (auto& i : ans) {
cout << i << "\n";
}
return 0;
}