#include<fstream>
using namespace std;
const int N=30003;
int a[N],b[N],t[4*N],n,i,x;
void build(int nod, int l, int r)
{
if (l==r) t[nod]=1;
else{
build(2*nod,l,(l+r)/2);
build(2*nod+1,(l+r)/2+1,r);
t[nod]=t[2*nod]+t[2*nod+1];
}
}
void update(int nod, int l, int r, int pos)
{
if (l==r) t[nod]=0;
else{
if (pos<=(l+r)/2) update(2*nod,l,(l+r)/2,pos);
else update(2*nod+1,(l+r)/2+1,r,pos);
t[nod]=t[2*nod]+t[2*nod+1];
}
}
int query(int nod, int l, int r, int pos)
{
if (l==r) return l;
int mij=(l+r)/2;
if (t[2*nod]>=pos)return query(2*nod,l,mij,pos);
else return query(2*nod+1,mij+1,r,pos-t[2*nod]);
}
int main()
{
ifstream cin("schi.in");
ofstream cout("schi.out");
cin>>n;
for (i=1;i<=n;i++)cin>>a[i];
build(1,1,n);
for (i=n;i;i--){
int x=query(1,1,n,a[i]);
update(1,1,n,x);
b[x]=i;
}
for (i=1;i<=n;i++)cout<<b[i]<<"\n";
return 0;
}