#include <cstdio>
#define NMAX 30023
using namespace std;
FILE *fin, *fout;
int n, v[NMAX], arb[2*NMAX], start, end, mid, ans[NMAX];
void pun(int st, int dr, int pos, int nod)
{
if(st == dr)
{
arb[nod] = 1;
return ;
}
int mij = (st+dr)/2;
if(pos <= mij) pun(st, mij, pos, 2*nod);
if(pos > mij) pun(mij+1, dr, pos, 2*nod+1);
arb[nod] = arb[2*nod] + arb[2*nod+1];
return ;
}
int interogare(int st, int dr, int st1, int dr1, int nod)
{
if(st == st1 && dr == dr1)
{
return arb[nod];
}
int mij = (st+dr)/2;
if(dr1 <= mij) return interogare(st, mij, st1, dr1, 2*nod);
if(st1 > mij) return interogare(mij+1, dr, st1, dr1, 2*nod+1);
return interogare(st, mij, st1, mij, 2*nod) + interogare(mij+1, dr, mij+1, dr1, 2*nod+1);
}
void cautbin(int a)
{
int poz, nr;
//printf("check %d\n", a);
while(start <= end)
{
mid = (start + end)/2;
nr = mid - interogare(1, n, 1, mid, 1);
//printf("start = %d end = %d mid = %d nr = %d\n", start, end, mid, nr);
if(a < nr)
{
end = mid-1;
}
if(a > nr)
{
start = mid+1;
}
if(a == nr)
{
poz = mid;
end = mid-1;
}
}
//printf("ans : %d\n", poz);
mid = poz;
}
int main()
{
fin = freopen("schi.in", "r", stdin);
fout = freopen("schi.out", "w", stdout);
scanf("%d", &n);
for(int i = n; i>=1; i--) scanf("%d", &v[i]);
for(int i = 1; i<= n; i++)
{
start = 1;
end = n;
cautbin(v[i]);
pun(1, n, mid, 1);
ans[mid] = n-i+1;
}
for(int i = 1; i<= n; i++) printf("%d\n", ans[i]);
fclose(fin);
fclose(fout);
}