#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
int n,cnt,k,now,father[maxn],fa1[maxn],fa2[maxn],s1[maxn],s2[maxn];
bool p[maxn];
int findSet(int x){
if(father[x]==x)
return x;
return father[x]=findSet(father[x]);
}
int main(){
scanf("%d",&n);
memset(fa1,-1,sizeof(fa1));
memset(fa2,-1,sizeof(fa2));
memset(s1,-1,sizeof(s1));
memset(s2,-1,sizeof(s2));
for(int i=1;i<=n;i++)
scanf("%d",&p[i]);
for(int i=1;i<=n;i++){
father[i]=i;
if(i==1)
k=i;
else{
if(p[i]==p[i-1])
s1[i-1]=i,fa1[i]=i-1;
else
s2[k]=i,fa2[i]=k,k=i;
}
}
while(cnt<n){
int k=findSet(1);
while(k!=-1){
if(k==-1)
break;
printf("%d ",k),cnt++;
father[findSet(k)]=findSet(k+1);
if(s1[k]==-1){
fa2[s2[k]]=-1;
s2[fa2[k]]=-1;
fa1[s2[k]]=fa2[k];
s1[fa2[k]]=s2[k];
} else{
fa2[s2[k]]=s1[k];
s2[fa2[k]]=s1[k];
fa2[s1[k]]=fa2[k];
s2[s1[k]]=s2[k];
}
k=s2[k];
}
puts("");
}
return 0;
}