#include <iostream>
using namespace std;
struct node
{
bool type;
int f;
int l;
};
node k[200001];
bool a[200001];
bool flag;
int n,ans;
int main()
{
cin.tie(0);
cout.tie(0);
cin>>n;
ans=n;
int f=1,x=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
flag=a[1];
for(int i=1;i<=n+1;i++)
{
if(a[i]!=flag)
{
k[x].type=flag;
k[x].f=f;
k[x].l=i-1;
f=i;
flag=!flag;
x++;
}
}
k[x].type=flag;
k[x].f=f;
k[x].l=n;
int p=1;
while(ans!=0)
{
while(k[p].f>k[p].l) p++;
flag=a[k[p].f];
cout<<k[p].f<<' ';
k[p].f++;
ans--;
for(int i=p;i<=x;i++)
{
if(k[i].type!=flag && (k[i].f<=k[i].l))
{
cout<<k[i].f<<' ';
k[i].f++;
ans--;
flag=!flag;
}
}
cout<<endl;
}
return 0;
}