#include<cstdio>
using namespace std;
int n,a[30001],b[100000],c[30001],i,j,s,k;
void add(int poz,int st,int dr,int i)
{
b[poz]++;
if(st==dr) return;
int mij=(st+dr)>>1,p=poz<<1;
if(i<=mij) add(p,st,mij,i);
else add(p+1,mij+1,dr,i);
}
int query(int poz,int st,int dr,int i)
{
if(st==dr) return st;
int mij=(st+dr)>>1,p=poz<<1;
int aux=mij-st+1-b[p];
if(aux<i) return query(p+1,mij+1,dr,i-aux);
else return query(p,st,mij,i);
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=n;i>=1;i--){
k=query(1,1,n,a[i]);
add(1,1,n,k);
c[k]=i;}
for(i=1;i<=n;i++)
printf("%d\n",c[i]);
fclose(stdout);
return 0;
}