#include<stdio.h>
#include<algorithm>
using namespace std;
int segtree[65536];
void add(int a,int b){
a+=32768;
while(a){
segtree[a]+=b;
a/=2;
}
}
int find(int a){
int left=0;
int right=32768;
int at=1;
while(left+1<right){
int M=(left+right)/2;
if(segtree[at*2+1]<a){
right=M;
a-=segtree[at*2+1];
at=at*2;
}else{
left=M;
at=at*2+1;
}
}
return right;
}
int d[40000];
int e[40000];
int main(){
int a;
scanf("%d",&a);
for(int i=0;i<a;i++)scanf("%d",d+i);
for(int i=0;i<a;i++){
add(i,1);
}
for(int i=a-1;i>=0;i--){
if(i<d[i]){
printf("NIE\n");
return 0;
}
e[i]=find(d[i]+1);
add(e[i]-1,-1);
}
for(int i=0;i<a;i++)printf("%d\n",e[i]);
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgc2VndHJlZVs2NTUzNl07CnZvaWQgYWRkKGludCBhLGludCBiKXsKCWErPTMyNzY4OwoJd2hpbGUoYSl7CgkJc2VndHJlZVthXSs9YjsKCQlhLz0yOwoJfQp9CmludCBmaW5kKGludCBhKXsKCWludCBsZWZ0PTA7CglpbnQgcmlnaHQ9MzI3Njg7CglpbnQgYXQ9MTsKCXdoaWxlKGxlZnQrMTxyaWdodCl7CgkJaW50IE09KGxlZnQrcmlnaHQpLzI7CgkJaWYoc2VndHJlZVthdCoyKzFdPGEpewoJCQlyaWdodD1NOwoJCQlhLT1zZWd0cmVlW2F0KjIrMV07CgkJCWF0PWF0KjI7CgkJfWVsc2V7CgkJCWxlZnQ9TTsKCQkJYXQ9YXQqMisxOwoJCX0KCX0KCXJldHVybiByaWdodDsKfQppbnQgZFs0MDAwMF07CmludCBlWzQwMDAwXTsKaW50IG1haW4oKXsKCWludCBhOwoJc2NhbmYoIiVkIiwmYSk7Cglmb3IoaW50IGk9MDtpPGE7aSsrKXNjYW5mKCIlZCIsZCtpKTsKCWZvcihpbnQgaT0wO2k8YTtpKyspewoJCWFkZChpLDEpOwoJfQoJZm9yKGludCBpPWEtMTtpPj0wO2ktLSl7CgkJaWYoaTxkW2ldKXsKCQkJcHJpbnRmKCJOSUVcbiIpOwoJCQlyZXR1cm4gMDsKCQl9CgkJZVtpXT1maW5kKGRbaV0rMSk7CgkJYWRkKGVbaV0tMSwtMSk7Cgl9Cglmb3IoaW50IGk9MDtpPGE7aSsrKXByaW50ZigiJWRcbiIsZVtpXSk7Cn0=