#include <bits/stdc++.h>
using namespace std;
struct node{
int fruit;
int fi;
int count;
};
int main(){
int del=0;
int n;
cin>>n;
vector<node>set;
int now=-1;
int fruit;
int num=0;
int nn;
int numberofvector=0;
for(int i=1;i<=n;i++){
cin>>fruit;
if(now==-1){
now=fruit;
num++;
nn=1;
continue;
}
if(now!=fruit){
set.push_back((node){now,nn,num });
numberofvector++;
nn=i;
num=0;
num++;
now=fruit;
continue;
}
num++;
}
set.push_back((node){now,nn,num });
//found a list
vector<int> l;
/////////////////////////////////////////////////////////////
while(del!=set.size()){
for(int i=0;i<set.size();i++){
if(set[i].fruit==-1)
continue;
if(i==0){
cout<<set[i].fi<<' ';
set[i].fi++;
set[i].count--;
if(set[i].count==0)
l.push_back(i);
continue;
}
if(set[i-1].fruit==set[i].fruit)
continue;
if(set[i-1].fruit==-1){
int cnt=i-1;
while(set[cnt].fruit==-1&&cnt!=0)
cnt--;
if(set[cnt].fruit==set[i].fruit)
continue;
}
cout<<set[i].fi<<' ';
set[i].fi++;
set[i].count--;
if(set[i].count==0)
l.push_back(i);
continue;
}
while(l.size()){
set[l.back()].fruit=-1;
l.pop_back();
del++;
}
cout<<endl;
}
}