#include<stdio.h>
#define inf 0x3f3f3f3f
int a[30001],cl[30001],c[64001],i,j,n,m,k,l,p;
FILE *in,*out;
void modifica(int nod,int st,int dr,int v){
int mijl;
if(st==dr)
c[nod]=0,cl[st]=i;
else{
mijl=(st+dr)>>1;
if(c[nod<<1]<v)
modifica((nod<<1)+1,mijl+1,dr,v-c[nod<<1]);
else
modifica(nod<<1,st,mijl,v);
c[nod]=c[nod<<1]+c[(nod<<1)+1];
}
}
void actualizare(int nod,int st,int dr,int a,int b){
int mijl;
if(a<=st&&b>=dr)
c[nod]=1;
else{
mijl=(st+dr)>>1;
if(a<=mijl)
actualizare(nod<<1,st,mijl,a,b);
if(b>mijl)
actualizare((nod<<1)+1,mijl+1,dr,a,b);
c[nod]=c[nod<<1]+c[(nod<<1)+1];
}
}
int main(){
in=fopen("schi.in","rt");
out=fopen("schi.out","wt");
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
fscanf(in,"%d",&a[i]);
for(i=1;i<=n;i++)
actualizare(1,1,n,i,i);
for(i=n;i>0;i--)
modifica(1,1,n,a[i]);
for(i=1;i<=n;i++)
fprintf(out,"%d\n",cl[i]);
return 0;
}