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