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

京公网安备 11010502036488号