#include<bits/stdc++.h>
#define INF 200010
using namespace std;
int n;
set<int> s1,s2;
inline int read()
{
int s=0,w=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();};
while(c>='0'&&c<='9'){s=s*10+c-'0';c=getchar();};
return s*w;
}
int main()
{
n=read();
s1.clear();
s2.clear();
int q;
for(int i=1;i<=n;i++)
{
q=read();
if(q) s1.insert(i);
else s2.insert(i);
}
s1.insert(INF);
s2.insert(INF);
int nt=0;
bool p;
if(*s1.begin()<*s2.begin()) p=0;
else p=1;
while(!p&&s1.size()>1||p&&s2.size()>1)
if(!p)
{
nt=*s1.upper_bound(nt);
if(nt==INF)
{
nt=0;
if(*s1.begin()<*s2.begin()) p=0;
else p=1;
puts("");
continue;
}
printf("%d ",nt);
s1.erase(nt);
p=!p;
}
else
{
nt=*s2.upper_bound(nt);
if(nt==INF)
{
nt=0;
if(*s1.begin()<*s2.begin()) p=0;
else p=1;
puts("");
continue;
}
printf("%d ",nt);
s2.erase(nt);
p=!p;
}
puts("");
while(s1.size()>1) printf("%d\n",*s1.begin()),s1.erase(*s1.begin());
while(s2.size()>1) printf("%d\n",*s2.begin()),s2.erase(*s1.begin());
return 0;
}