res = []
def dfs(wait, stack, out): # 火车列表的索引(wait);进站队列(stack)存放已经进站的火车;出站队列(out)存放已经出站的火车
    if not wait and not stack: # # 若是进栈出栈都完成,那么把出栈的结果放到res中
        res.append(' '.join(map(str, out)))
    if wait: # 入栈。选择进站,索引加一,进站队列加入当前索引的火车,出站队列不变
        dfs(wait[1:], stack + [wait[0]], out)
    if stack: # 出栈。选择出站,当前索引不变,进站队列减去最后一位,出站队列加上进站队列的最后一位
        dfs(wait, stack[:-1], out + [stack[-1]])
while True:
    try:
        n, nums = int(input()), list(map(int, input().split()))
        dfs(nums, [], [])
        for i in sorted(res):
            print(i)
    except:
        break