#include <stdio.h>
#include <stdlib.h>
int q[30001],sol[30001],arb[70001],val,x,vval;
void update(int st,int dr,int pos,int x)
{
if(st!=dr){
if(x>(st+dr)/2) update((st+dr)/2+1,dr,pos*2+1,x);
else update(st,(st+dr)/2,pos*2,x);
}
arb[pos]--;
}
void search(int st,int dr,int pos)
{
if(st!=dr){
if(arb[pos*2]>=val)
search(st,(st+dr)/2,pos*2);
else{
val-=arb[pos*2];
search((st+dr)/2+1,dr,pos*2+1);
}
}
else
x=st;
}
void form(int st,int dr,int pos){
if(st!=dr){
form(st,(st+dr)/2,pos*2);
form((st+dr)/2+1,dr,pos*2+1);
}
arb[pos]=dr-st+1;
}
int main()
{
int i,n;
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&q[i]);
form(1,n,1);
for(i=n; i>0; i--)
{
val=vval=q[i];
search(1,n,1);
update(1,n,1,x);
sol[x]=i;
}
for(i=1; i<=n; i++)
printf("%d\n",sol[i]);
return 0;
}