#include <iostream>
#include <bits/stdc++.h>
#include <string>
using namespace std;
//70
vector<int> nums;
vector<string> res;
int n;

void func(int idx, string temp, vector<int> myStack) {
    if (idx == n) {
        //火车已经入站完毕,将站台清空即可
        while (!myStack.empty()) {
            temp = temp + to_string(myStack.back()) + ' ';
            myStack.pop_back();
        }
        temp.pop_back();
        res.emplace_back(temp);
    } else {
        //火车还未入站完毕,下一辆入站的火车是nums[idx]
        //若火车站不为空,可以选择出栈,并进入下一层
        //可以选择入站,并进入下一层
        if (!myStack.empty()) {
            int tt = myStack.back();
            myStack.pop_back();
            func(idx, temp + to_string(tt) + ' ', myStack);
            myStack.push_back(tt);
        }
        myStack.push_back(nums[idx]);
        func(idx + 1, temp, myStack);
    }
}

int main() {
    cin >> n;
    nums = vector<int>(n);
    for (int i = 0; i < n; i++)
        cin >> nums[i];
    vector<int> myStack;
    func(0, "", myStack);
    sort(res.begin(), res.end());
    for (string& s : res)
        cout << s << '\n';
    return 0;
}
// 64 位输出请用 printf("%lld")