CF1833D Flipper

题目描述

给你一个长度为 $ n $ 的数列 $ p $。 一个数列是 $ 1 $ 到 $ n $ 按某一顺序组成的阵列。例如,$ {2,3,1,5,4} $ 是一个数列,而 $ {1,2,2} $ 不是(因为 $ 2 $ 出现了两次),$ {1,3,4} $ 也不是一个数列(因为 $ n=3 $,但数列中包含 $ 4 $)。 对于数列 $ p $,进行一次如下操作: - 选择一个区间 $ [l, r] $($ 1\le l\le r\le n $,一个区间是一串连续的数 $ {p_l, p_{l+1}, \ldots, p_{r-1}, p_r} $),并将它反转过来。反转一个区间即交换如下的数对 $ (p_l, p_r),(p_{l+1}, p_{r-1}),\dots,(p_{l + i}, p_{r - i}) $(其中 $ l + i \le r - i $)。 - 交换前缀和后缀:$ [r+1, n] $ 和 $ [1, l - 1] $(注意:这些区间可能是空的)。 例如,给定 $ n = 5, p = \{2, \color{blue}{3},\color{blue}{1}, \color{blue}{5}, \color{blue}{4} \color{black}\} $,如果你选择区间 $ [l = 2, r = 3] $,反转区间以后 $ p = \{\color{green}{2}, \color{blue}{1}, \color{blue}{3}, \color{green}{5}, \color{green}{4}\color{black}\} $。接着交换区间 $ [4, 5] $ 与 $ [1, 1] $。得到 $ p = \{\color{green}{5}, \color{green}{4}, 1, 3, \color{green}{2}\color{black}\} $。可以证明这是操作后该排列的字典序的最大可能结果。 你需要输出通过一次所述操作后可以得到的字典序最大数列。 如果存在一个 $ i $($ 1 \le i \le n $),使 $ a_j = b_j $ 对于 $ 1 \le j < i $ 且 $ a_i > b_i $,那么一个数列 $ a $ 的字典序大于数列 $ b $ 的字典序 。

输入格式

输入的第一行包含一个整数 $ t $,表示测试数据的组数。 对于每组数据: 第一行包含一个单一的整数 $ n $ 表示数列的长度。 第二行包含 $ n $ 个整数:$ p_1, p_2, \ldots, p_n $ 即数列 $ p $。

输出格式

对于每组测试数据,输出一行 $ n $ 个整数,表示经过一次操作后可以得到的字典序最大的数列。

说明/提示

对于 $ 100\% $ 的数据,$ 1 \le t \le 1000 $,$ 1 \le n \le 2000 $。\ 保证每次 $ T $ 组测试数据的 $ n $ 之和不超过 $ 2000 $。