#include<fstream>
#define FOR(a,b,c) for(register int a=b;a<=c;++a)
#define ROF(a,b,c) for(register int a=b;a>=c;--a)
#define N 100100
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n,x;
struct Tr
{
Tr *l,*r;
int cnt,pr,key,val;
Tr() {}
Tr(int _key,int _pr,int _val)
{
key=_key;
pr=_pr;
val=_val;
cnt=1;
l=r=NULL;
}
};
#define T Tr*
T R;
int cnt(T t)
{
if(!t)
return 0;
return t->cnt;
}
void upd(T &t)
{
if(t)
t->cnt=cnt(t->l)+cnt(t->r)+1;
}
void split(T t,T &l,T &r,double k,int add)
{
if(!t)
return void(l=r=NULL);
int key=add+cnt(t->l)+1;
if(k<key)
split(t->l,l,t->l,k,add),r=t;
else
split(t->r,t->r,r,k,key),l=t;
upd(t);
}
void insert(T &t,T it,int add)
{
if(!t)
t=it;
else
if(it->pr > t->pr)
split(t,it->l,it->r,it->key-0.5,add),t=it;
else
if(it->key-0.5<t->key)
insert(t->l,it,add);
else
insert(t->r,it,add+cnt(t->l)+1);
upd(t);
}
void dfs(T t)
{
if(!t)
return;
dfs(t->l);
g<<t->val<<"\n";
dfs(t->r);
}
int main ()
{
f>>n;
FOR(i,1,n)
{
f>>x;
T it=new Tr(x,rand()+1,i);
insert(R,it,0);
}
dfs(R);
return 0;
}