#include<bits/stdc++.h>
using namespace std;
struct k{
int start;
int end;
int size;
int lx;
int syf;
}s[200010];
int sy[200010],cnt=0;
int main(){
//freopen("fruit.in","r",stdin);
//freopen("fruit.ans","w",stdout);
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",sy+i);
if(i>0){
if(sy[i]==sy[i-1]){
s[cnt].end++;
s[cnt].size++;
}else{
s[++cnt].start=i;
s[cnt].end=i+1;
s[cnt].size=1;
s[cnt].lx=sy[i];
s[cnt].syf=1;
}
}else{
s[++cnt].start=i;
s[cnt].end=i+1;
s[cnt].size=1;
s[cnt].lx=sy[i];
s[cnt].syf=1;
}
}
int flag;
do{
flag=0;
for(i=1;i<=cnt;i++){
if(s[i].syf==0){
continue;
}
flag=1;
sy[s[i].start]=-1;
printf("%d ",s[i].start+1);
int first=1;
s[i].size=0;
s[i].end=s[i].end;
for(int j=s[i].start;j<s[i].end;j++){
if(sy[j]!=-1){
if(first){
first=0;
s[i].start=j;
}
s[i].size++;
}
}
int f=-1;
if(s[i].size==0){
s[i].syf=0;
}
for(int j=i-1;j>=1;j--){
if(s[j].syf){
if(s[j].lx==s[i].lx){
f=j;
}
break;
}
}
if(f!=-1){
int first=1;
s[f].size=0;
s[f].end=s[i].end;
for(int j=s[f].start;j<s[f].end;j++){
if(sy[j]!=-1){
if(first){
first=0;
s[f].start=j;
}
s[f].size++;
}
}
s[i].syf=0;
}
}
printf("\n");
}while(flag);
//fclose(stdin);
//fclose(stdout);
return 0;
}
T^T感谢调整