#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;
}