#include <fstream>
#define nmax 50001
using namespace std;
ifstream f("concurs1.in");
ofstream g("concurs1.out");
int arb[4*nmax],j,n,i,x,ok=1,sol[nmax];
void adaug(int poz,int val,int nod,int a,int b)
{
if(a==b) arb[nod]=val;
else
{
int mij=(a+b)/2;
if(poz<=mij) adaug(poz,val,2*nod,a,mij);
else adaug(poz,val,2*nod+1,mij+1,b);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void scad(int poz,int val,int nod,int a,int b)
{
if(a==b) {
arb[nod]+=val;sol[i]=a;}
else{
int mij=(a+b)/2;
if(poz>arb[nod]) {ok=0;g<<"NU ARE SOLUTIE";return;}
if(poz<=arb[2*nod]) scad(poz,val,2*nod,a,mij);
else scad(poz-arb[2*nod],val,2*nod+1,mij+1,b);
arb[nod]+=val;
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++) adaug(i,1,1,1,n);
/*for(j=1;j<2*n;j++) g<<arb[j]<<' ';
g<<'\n';*/
for(i=1;i<=n&&ok;i++)
{
f>>x;
scad(x+1,-1,1,1,n);
/* for(j=1;j<2*n;j++) g<<arb[j]<<' ';
g<<'\n';*/
}
if(ok)
for(i=1;i<=n;i++) g<<sol[i]<<' ';
return 0;
}