rt
#include <bits/stdc++.h>
using namespace std;
struct re{
int name;
int cnt;
string s;
};
vector<re> v;
string get(int x){
string res="";
while(x){
char c=x%10+'0';
res=c+res;
x/=10;
}
return res+" ";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
int index=0;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(i==1){
v.push_back((re){x,1,get(i)});
}else{
if(v[index].name==x) v[index].cnt++,v[index].s+=get(i);
else{
index++;
v.push_back((re){x,1,get(i)});
}
}
}
// for(int i=0;i<=index;i++){
// cout<<v[i].name<<" "<<v[i].cnt<<" "<<v[i].s<<endl;
// }
while(v.size()){
for(int i=0;i<v.size();i++){
string str="";
int j=0;
for(j=0;j<v[i].s.size();j++){
if(v[i].s[j]==' ') break;
str+=v[i].s[j];
}
cout<<str<<" ";
v[i].s=v[i].s.erase(0,j+1);
v[i].cnt--;
}
cout<<endl;
for(int i=0;i<v.size();){
int j=i;
if(v[j].cnt==0){
v.erase(v.begin()+i);
if(i==0){
continue;
}
j=i;
while(v[i-1].name==v[j].name&&j<v.size()){
v[i-1].cnt+=v[j].cnt;
// cout<<v[3].s<<"[[[\n";
v[i-1].s=v[i-1].s+v[j].s;
// cout<<v[2].s<<"[[[\n";
j++;
}
for(int k=i;k<j;k++){
v.erase(v.begin()+i);
}
// cout<<v[3].s,
// cout<<v.size()<<endl;
}
i++;
}
// for(int i=0;i<v.size();i++){
// cout<<v[i].s;
// }
// cout<<endl;
// for(int i=0;i<v.size();i++){
// for(int j=0;j<v[i].cnt;j++)
// cout<<v[i].name<<" ";
// }
// cout<<endl;
}
return 0;
}