#include<bits/stdc++.h>
using namespace std;
void read(int &x)
{
int f=1;
x=0;
char ch=getchar();
while((ch>'9'||ch<'0')&&ch!='-')
{
ch=getchar();
}
if(ch=='-')
{
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x*=10;
x+=ch-'0';
ch=getchar();
}
x*=f;
}
struct gz{
int l,r,kl,kr,lb,gs=0,tl,tr;
bool pd=0,yt=0;
}a[int(2*1e5+1)];
int main()
{
int n,t=1;
read(n);
int bj=1;
for(int i=1;i<=n;i++)
{
read(a[i].lb);
a[1].yt=1;
if(a[i].lb!=a[bj].lb)
{
a[bj].kr=i;
a[i].kl=bj;
a[bj].tl=bj;
a[bj].tr=i-1;
bj=i;
}
else
{
if(i!=1)
{
a[i].l=i-1;
a[i-1].r=i;
}
a[bj].gs++;
}
}
while(n)
{
int bj=1;
while(a[bj].gs<=0)
{
bj=a[bj].kr;
}
bj=a[bj].tl;
while(bj!=0)
{
n--;
a[bj].pd=1;
printf("%d ",bj);
a[bj].gs--;
a[bj].tl=a[bj].r;
if(a[bj].gs==0)
{
if(a[a[bj].kl].lb==a[a[bj].kr].lb)
{
a[a[bj].kl].kr=a[a[bj].kr].kr;
a[a[a[bj].kr].kr].kl=a[bj].kl;
a[a[bj].kl].gs+=a[a[bj].kr].gs;
a[a[a[bj].kl].tr].r=a[a[bj].kr].tl;
a[a[a[bj].kr].tl].l=a[a[bj].kl].tr;
}
else
{
a[a[bj].kl].kr=a[bj].kr;
a[a[bj].kr].kl=a[bj].kl;
}
}
else
{
a[a[bj].kr].kl=a[bj].r;
a[a[bj].kl].kr=a[bj].r;
a[a[bj].r].gs=a[bj].gs;
a[a[bj].r].kl=a[bj].kl;
a[a[bj].r].kr=a[bj].kr;
a[a[bj].r].yt=a[bj].yt;
a[bj].yt=0;
a[bj].tr=0;
a[bj].tl=0;
a[bj].kr=0;
a[bj].kl=0;
a[bj].gs=0;
bj=a[bj].r;
a[bj].l=0;
}
bj=a[bj].kr;
}
printf("\n");
}
return 0;
}