#include <bits/stdc++.h>
using namespace std;
const int MN=200010;
int head = 0, tail = 200005;
int nx[MN]={200005}, pr[MN]={0};
int value[MN]={2};
int block[MN]={0};
void del(int x){
nx[pr[x]]=nx[x];
pr[nx[x]]=pr[x];
}
void cha(){
bool beichale=false;//是否为下一个块ppt
int ppt=head;//ppt是查到哪里了
int num = 0;//num是block的有效元素数
while (nx[ppt]!=tail){//全都遍历
if (value[ppt]!=value[nx[ppt]]) {
block[num]=nx[ppt];
num++;
}
ppt = nx[ppt];
}
for(int i=0; i<num; i++){
if(block[i]!=0){
cout<<block[i]<<" ";
del(block[i]);
}
}
int block[MN]={0};
}
void ad(int x, int k){
int sav = nx[k];
pr[sav]=x;
nx[k] = x;
nx[x]=sav;
pr[x]= k;
}
void prin(){
int i=head;
i=nx[i];
while(i!=tail){
cout<<value[i]<<" ";
i=nx[i];
}
cout<<endl;
}
int main(){
int n;
cin>>n;
nx[head]=tail;
pr[tail]=head;
ad(1, head);
cin>>value[1];
for (int i=2; i<=n; i++){
ad(i, i-1);
cin>>value[i];
}
while(1<2){
if(nx[head]==tail){
break;
}
cha();
cout<<endl;
}
}
我太菜了