{$IFDEF NORMAL}
{$I-,OBJECTCHECKS-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
{$I+,OBJECTCHECKS-,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
{$I-,OBJECTCHECKS-,Q-,R-,S-}
{$ENDIF RELEASE}
program schi;
var f,g:text;
a:array[1..100000] of longint;
n:longint;
vp,v:array[1..30000] of longint;
procedure iofile;
var i:longint;
begin
assign(f,'schi.in');
reset(f);
assign(g,'schi.out');
rewrite(g);
readln(f,n);
for i:=1 to n do
readln(f,v[i]);
close(f);
end;
procedure init(st,dr,p:longint);
var m:longint;
begin
a[p]:=dr-st+1;
if st<dr then
begin
m:=(st+dr) div 2;
init(st,m,2*p);
init(m+1,dr,2*p+1);
end;
end;
procedure update(st,dr,p,x:longint);
var m:longint;
begin
dec(a[p]);
if st<dr then
begin
m:=(st+dr) div 2;
if x>m then update(m+1,dr,2*p+1,x) else
update(st,m,2*p,x);
end;
end;
procedure query(st,dr,x,nr,p:longint);
var m:longint;
begin
if st=dr then
begin
vp[st]:=nr;
update(1,n,1,st);
end else
begin
m:=(st+dr) div 2;
if x>a[p*2] then
query(m+1,dr,x-a[p*2],nr,p*2+1) else
query(st,m,x,nr,2*p);
end;
end;
procedure prel;
var i:longint;
begin
init(1,n,1);
for i:=n downto 1 do
begin
query(1,n,v[i],i,1);
end;
for i:=1 to n do
writeln(g,vp[i]);
close(g);
end;
begin
iofile;
prel;
end.