SP7851 JZPSTA - Stacks of Zippy

题目描述

最近,Zippy 拿到了四个栈,分别是 A、B、C 和 D。开始时,栈 A 中有 $n$ 个元素,这些元素是 $1$ 到 $n$ 的一个排列,而栈 B、C 和 D 则都是空的。Zippy 可以执行以下四种操作: - 操作 a:将栈 A 的顶部元素移动到栈 B(前提是栈 A 非空) - 操作 b:将栈 B 的顶部元素移动到栈 D(前提是栈 B 非空) - 操作 c:将栈 A 的顶部元素移动到栈 C(前提是栈 A 非空) - 操作 d:将栈 C 的顶部元素移动到栈 D(前提是栈 C 非空) Zippy 一共可以进行 $2 \times n$ 次操作。经过这些操作后,栈 D 中应该正好有 $n$ 个元素。然后,他一次从栈 D 中取出顶部元素。如果取出的第一个元素是 $n$,接着是 $n-1$,一直到最后一个元素是 $1$,Zippy 会非常开心。同时,他也希望所采纳的操作序列在字典序上是最小的。

输入格式

第一行是一个整数 $t$,表示测试用例的数量。 接下来的 $t$ 个测试用例中,每个测试用例的第一行是一个整数 $n$,表示栈 A 中的元素个数。第二行包含 $n$ 个整数,由空格分隔,表示栈 A 从顶到底的元素序列。 可以保证所有测试用例中 $n$ 值的总和不超过 $200,000$,且每个 $n$ 的值都不超过 $100,000$。

输出格式

对于每个测试用例,输出一行,表示字典序最小的操作序列。操作序列由 `a`、`b`、`c` 和 `d` 四种字母组成。

说明/提示

- $1 \le t \le 100$ - $1 \le n \le 100,000$ - $\sum n \le 200,000$ **本翻译由 AI 自动生成**