#include <bits/stdc++.h>
#define ld long double
#define ll long long
#define pb push_back
#define fin(a, n) for(int i = a; i < n; i++)
#define fjn(a, n) for(int j = a; j < n; j++)
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const double pi = acos(-1);
const int N = 1000+20;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const int MOD = 1e9+7;
string di[] = {"D","L", "U", "R", "UL", "UR", "DL", "DR"};
int dx[] = {+1, +0, +0, -1, -1, -1, +1, +1};
int dy[] = {+0, -1, +1, +0, -1, +1, -1, +1};
char dc[] = {'D', 'L', 'R', 'U'};
struct segTree {
ll treeSize;
vector<ll> used;
ll n;
segTree(ll n) {
treeSize = 1;
this->n = n;
while (treeSize < n) treeSize <<= 1;
used.resize(2 * treeSize, -oo);
}
void build() {
for (ll i = treeSize-1; i >= 0; i--) {
used[i] = 1;
if (i <= treeSize/2) {
used[i] = used[2*i+1] + used[2*i+2];
}
}
}
void change(ll k, ll i, ll l, ll r) {
if (r-l == 1) {
used[i] = 0;
return;
}
ll mid = l+(r-l)/2;
if (used[2*i+2] >= k) {
change(k, 2*i+2, mid, r);
}
else change(used[2*i+1]-k, 2*i+1, l, mid);
used[i] = used[2*i+1] + used[2*i+2];
}
void change(ll k) {
change(k, 0, 0, treeSize);
}
ll query(ll k, ll i, ll l, ll r) {
if (r-l == 1) {
return i;
}
ll mid = l+(r-l)/2;
if (used[2*i+2] >= k) {
return query(k, 2*i+2, mid, r);
}
return query(used[2*i+1]-k, 2*i+1, l, mid);
}
ll query(ll k) {
ll x = query(k, 0, 0, treeSize);
change(k);
return x;
}
};
void solve() {
ll n; cin >> n;
vector<ll> v(n);
fin(0, n) cin >> v[i];
segTree st(n);
st.build();
for (int i = n-1; i >= 0; i--) {
ll idx = st.query(v[i]);
cout << idx << " ";
}
cout << "\n";
}
int main() {
FAST;
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int tt = 1; //cin >> tt;
while (tt--) {
solve();
//cout << "Case #" << c++ << ": ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmluKGEsIG4pIGZvcihpbnQgaSA9IGE7IGkgPCBuOyBpKyspCiNkZWZpbmUgZmpuKGEsIG4pIGZvcihpbnQgaiA9IGE7IGogPCBuOyBqKyspCiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSxhLmVuZCgpCiNkZWZpbmUgYWxscihhKSBhLnJiZWdpbigpLGEucmVuZCgpCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cikKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBkb3VibGUgcGkgPSBhY29zKC0xKTsKY29uc3QgaW50IE4gPSAxMDAwKzIwOwpjb25zdCBsbCBvbyA9IDB4M2YzZjNmM2YzZjNmM2YzZjsKY29uc3QgaW50IE1PRCA9IDFlOSs3OwoKc3RyaW5nIGRpW10gPSB7IkQiLCJMIiwgIlUiLCAiUiIsICJVTCIsICJVUiIsICJETCIsICJEUiJ9OwppbnQgZHhbXSA9IHsrMSwgKzAsICswLCAtMSwgLTEsIC0xLCArMSwgKzF9OwppbnQgZHlbXSA9IHsrMCwgLTEsICsxLCArMCwgLTEsICsxLCAtMSwgKzF9OwpjaGFyIGRjW10gPSB7J0QnLCAnTCcsICdSJywgJ1UnfTsKCnN0cnVjdCBzZWdUcmVlIHsKICAgIGxsIHRyZWVTaXplOwogICAgdmVjdG9yPGxsPiB1c2VkOwogICAgbGwgbjsKICAgIHNlZ1RyZWUobGwgbikgewogICAgICAgIHRyZWVTaXplID0gMTsKICAgICAgICB0aGlzLT5uID0gbjsKICAgICAgICB3aGlsZSAodHJlZVNpemUgPCBuKSB0cmVlU2l6ZSA8PD0gMTsKICAgICAgICB1c2VkLnJlc2l6ZSgyICogdHJlZVNpemUsIC1vbyk7CiAgICB9CgogICAgdm9pZCBidWlsZCgpIHsKICAgICAgICBmb3IgKGxsIGkgPSB0cmVlU2l6ZS0xOyBpID49IDA7IGktLSkgewogICAgICAgICAgICB1c2VkW2ldID0gMTsKICAgICAgICAgICAgaWYgKGkgPD0gdHJlZVNpemUvMikgewogICAgICAgICAgICAgICAgdXNlZFtpXSA9IHVzZWRbMippKzFdICsgdXNlZFsyKmkrMl07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgdm9pZCBjaGFuZ2UobGwgaywgbGwgaSwgbGwgbCwgbGwgcikgewogICAgICAgIGlmIChyLWwgPT0gMSkgewogICAgICAgICAgICB1c2VkW2ldICA9IDA7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGxsIG1pZCA9IGwrKHItbCkvMjsKICAgICAgICBpZiAodXNlZFsyKmkrMl0gPj0gaykgewogICAgICAgICAgICAgY2hhbmdlKGssIDIqaSsyLCBtaWQsIHIpOwogICAgICAgIH0KICAgICAgICBlbHNlIGNoYW5nZSh1c2VkWzIqaSsxXS1rLCAyKmkrMSwgbCwgbWlkKTsKCiAgICAgICAgdXNlZFtpXSA9IHVzZWRbMippKzFdICsgdXNlZFsyKmkrMl07CiAgICB9CgogICAgdm9pZCBjaGFuZ2UobGwgaykgewogICAgICAgIGNoYW5nZShrLCAwLCAwLCB0cmVlU2l6ZSk7CiAgICB9CgogICAgbGwgcXVlcnkobGwgaywgbGwgaSwgbGwgbCwgbGwgcikgewogICAgICAgIGlmIChyLWwgPT0gMSkgewogICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CgogICAgICAgIGxsIG1pZCA9IGwrKHItbCkvMjsKICAgICAgICBpZiAodXNlZFsyKmkrMl0gPj0gaykgewogICAgICAgICAgICByZXR1cm4gcXVlcnkoaywgMippKzIsIG1pZCwgcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBxdWVyeSh1c2VkWzIqaSsxXS1rLCAyKmkrMSwgbCwgbWlkKTsKICAgIH0KCiAgICBsbCBxdWVyeShsbCBrKSB7CiAgICAgICBsbCB4ID0gIHF1ZXJ5KGssIDAsIDAsIHRyZWVTaXplKTsKICAgICAgICBjaGFuZ2Uoayk7CiAgICAgICAgcmV0dXJuIHg7CiAgICB9Cn07Cgp2b2lkIHNvbHZlKCkgewogICAgbGwgbjsgIGNpbiA+PiBuOwogICAgdmVjdG9yPGxsPiB2KG4pOwogICAgZmluKDAsIG4pIGNpbiA+PiB2W2ldOwogICAgc2VnVHJlZSBzdChuKTsKICAgIHN0LmJ1aWxkKCk7CgogICAgZm9yIChpbnQgaSA9IG4tMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICBsbCBpZHggPSBzdC5xdWVyeSh2W2ldKTsKICAgICAgICBjb3V0IDw8IGlkeCA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8ICJcbiI7Cn0KCmludCBtYWluKCkgewogICAgRkFTVDsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCiAgICBpbnQgdHQgPSAxOyAvL2NpbiA+PiB0dDsKICAgIHdoaWxlICh0dC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgICAgICAvL2NvdXQgPDwgIkNhc2UgIyIgPDwgYysrIDw8ICI6ICI7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==