#include<cstdio>
int n,i,j,a,b,p,x[200100],v[200100],y[200100];
FILE *f,*g;
void upd1(int nod,int l,int r,int p,int x){
if(l==r){
v[nod]=x;
return;
}
int mid=(l+r)/2;
if(p<=mid)
upd1(2*nod,l,mid,p,x);
else
upd1(2*nod+1,mid+1,r,p,x);
v[nod]=v[2*nod]+v[2*nod+1];
}
void upd(int nod,int l,int r,int x){
if(l==r){
v[nod]=0;
y[l]=i;
return;
}
int mid=(l+r)/2;
if(x<=v[2*nod])
upd(2*nod,l,mid,x);
else
upd(2*nod+1,mid+1,r,x-v[2*nod]);
v[nod]=v[2*nod]+v[2*nod+1];
}
int main(){
f=fopen("schi.in","r");
g=fopen("schi.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&x[i]);
upd1(1,1,n,i,1);
}
for(i=n;i>=1;i--){
upd(1,1,n,x[i]);
}
for(i=1;i<=n;i++){
fprintf(g,"%d\n",y[i]);
}
fclose(f);
fclose(g);
return 0;
}