#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000000;
struct block{
int pre,nxt;
int l,r,num;
}a[MAXN];
int main(){
int n;
scanf("%d",&n);
a[0]=(block){0,0,0,0,2};
int index=0;
int cnt=0;
for(int i=1,pre=2;i<=n;i++){
int num;
scanf("%d",&num);
if(index==0||num!=pre){
index++;
a[index]={a[index-1].nxt,index,i,i,num};
a[index-1].nxt=index;
}
else
a[index].r++;
pre=num;
}
a[index].nxt=-1;
while(cnt<n){
for(int i=0;i!=-1;i=a[i].nxt){
if(a[i].num!=2&&(i==1||a[i].num!=a[a[i].pre].num)){
printf("%d ",a[i].l);
cnt++;
a[i].l++;
}
}
putchar('\n');
for(int i=0;i!=-1;i=a[i].nxt)
if(a[i].l>a[i].r){
a[a[i].pre].nxt=a[i].nxt;
a[a[i].nxt].pre=a[i].pre;
a[i].num=2;
}
}
return 0;
}