#include<bits/stdc++.h>
using namespace std;
int n,a[200005],tmp,pos,v;
struct node{
int l,r,pre,nxt,data;
};
vector<node>lis;
int main(){
//freopen("fruit.in","r",stdin);
//freopen("fruit.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
tmp=a[1],pos=1;
lis.push_back({0,0,0,1,0});
for(int i=2;i<=n;i++){
if(a[i]!=tmp){
lis.push_back({pos,i-1,lis.size()-1,lis.size()+1,tmp});
tmp=a[i],pos=i;
}
}
lis.push_back({pos,n,lis.size()-1,0,tmp});
while(lis[0].nxt!=0){
pos=lis[0].nxt,v=lis[lis[0].nxt].data;
while(pos!=0){
if(lis[pos].data==v){
printf("%d ",lis[pos].l);
lis[pos].l++,v^=1;
if(lis[pos].l>lis[pos].r)
lis[lis[pos].pre].nxt=lis[pos].nxt,lis[lis[pos].nxt].pre=lis[pos].pre;
}
pos=lis[pos].nxt;
}
printf("\n");
}
return 0;
}