#include <bits/stdc++.h>
using namespace std;
struct block{
int v; //值
int s; //开始位置
int e; //结束位置
};
queue<block> bm;
queue<block> tm;
bool used[200001];
int main(){
int n;
int m;
cin >> n;
memset(used, 0, sizeof(used));
block b;
block x;
int state = -1;
for(int i = 0; i < n; i++){
cin >> m;
if(state == m) {
bm.back().e = bm.back().e + 1;
continue;
}
b.v = m;
b.s = i;
b.e = i;
bm.push(b);
state = m;
}
while(bm.size() > 0) {
//挑选水果
while(bm.size() > 0){
b = bm.front();
bm.pop();
while(used[b.s] == 1 && b.s < b.e) b.s++;
printf("%d ", b.s + 1);
used[b.s] = 1;
if(b.s == b.e) continue;
tm.push(b);
}
printf("\n");
//拼接相同的块
while(tm.size() > 0){
b = tm.front();
tm.pop();
while(tm.size() > 0){
x = tm.front();
if(x.v == b.v){
b.e = x.e;
tm.pop();
}else break;
}
bm.push(b);
}
}
return 0;
}