#include<bits/stdc++.h>
using namespace std;
int n,i,t,x,y,s,a[201000],b[201000],c[201000],f[201000],g[201000];
void read(int &x){
int f=0;char ch=getchar();x=0;
while(ch>'9'||ch<'0'){if(ch=='-')f=1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
if(f)x=-x;
}
int find(int x){
if(c[x]==0)return x;
return f[x]=find(f[x]);
}
int find1(int x){
if(c[x]==0)return x;
return g[x]=find(g[x]);
}
int main(){
scanf("%d",&n); a[0]=-1;f[0]=1;
for(i=1;i<=n;i++){
read(a[i]);
f[i]=i+1;g[i]=i-1;
if(a[i]!=a[i-1]){
b[++t]=i;
}
}
while(s<n){
for(i=1;i<=t;i++)
printf("%d ",b[i]),c[b[i]]=1,s++,f[b[i]-1]=f[b[i]],g[b[i]+1]=g[b[i]];
putchar(10);
for(i=1;i<=t;i++){
x=find1(g[b[i]]);
y=find(f[b[i]]);
f[x]=max(f[x],y);
g[y]=min(g[y],x);
}
t=0;
for(i=find(f[0]);i<=n;i=f[i])
if(a[g[i]]!=a[i])b[++t]=i;
}
return 0;
}