#3276. 双栈排序 暂未评定

时间限制:1000 ms 内存限制:256 MiB 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: root

题目描述

Tom 最近在研究一个有趣的排序问题。

通过 个栈 ,Tom 希望借助以下 种操作实现将输入序列升序排序。

操作

如果输入序列不为空,将第一个元素压入栈

操作

如果栈 不为空,将 栈顶元素弹出至输出序列

操作

如果输入序列不为空,将第一个元素压入栈

操作

如果栈 不为空,将 栈顶元素弹出至输出序列

如果一个 的排列 可以通过一系列操作使得输出序列为 ,Tom 就称 是一个”可双栈排序排列”。

例如 就是一个”可双栈排序序列”,而 不是。

下图描述了一个将 排序的操作序列:<a, c, c, b, a, d, d, b>

当然,这样的操作序列有可能有几个,对于上例 <a, c, c, b, a, d, d, b>是另外一个可行的操作序列。

Tom 希望知道其中字典序最小的操作序列是什么。

输入格式

输入的第一行是一个整数p,代表有p组测试数据。

每组测试数据的第一行有一个正整数n,第二行有n个用空格隔开的正整数,构成一个1~n的排列。

输出格式

输出共p行,如果输入的排列不是”可双栈排序排列”,输出数字0。

否则输出字典序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。

样例

样例输入

1
3
2 3 1

样例输出

a c a b b d

数据范围与提示