#CF2101B. 四元组交换

    ID: 6444 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 1 上传者: 标签>数据结构数据结构暴力破解分治贪心排序*1800

四元组交换

B. 四元组交换

每个测试的时间限制:2 秒
内存限制:256 MB

给你一个长度为 nn 的排列 aa。你可以进行任意多次(包括零次)如下操作:

  • 选择一个下标 1in31 \le i \le n-3,然后同时交换 aia_iai+2a_{i+2},以及 ai+1a_{i+1}ai+3a_{i+3}
    换句话说,排列 aa 将变为:$$[\dots, a_i, a_{i+1}, a_{i+2}, a_{i+3}, \dots] \to [\dots, a_{i+2}, a_{i+3}, a_i, a_{i+1}, \dots] $$

请确定通过任意次上述操作可以得到的字典序最小的排列。


定义

  • 一个长度为 nn 的排列是由 nn 个不同的整数 11nn 按任意顺序组成的数组。
    例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3 却出现了 44)。

  • 对于两个长度相同的数组 xxyy,称 xx 字典序小于 yy,当且仅当在它们第一个不同的位置上,xx 中的元素小于 yy 中的对应元素。


输入
每个测试包含多个测试用例。第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例数。
每个测试用例的第一行包含一个整数 nn4n21054 \le n \le 2 \cdot 10^5),表示排列的长度。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n),表示排列 aa 的元素。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出
对于每个测试用例,输出通过上述操作可以得到的字典序最小的排列。


示例

输入:

3
4
3 4 1 2
5
5 4 3 1 2
10
10 9 8 7 6 5 4 3 2 1

输出:

1 2 3 4 
2 1 3 4 5 
2 1 4 3 6 5 8 7 10 9 

注释

  • 第一个测试用例:对 i=1i=1 执行一次操作,排列变为 [1,2,3,4][1,2,3,4],这是字典序最小的可达排列。
  • 第二个测试用例:可以通过以下操作序列得到 [2,1,3,4,5][2,1,3,4,5]
    1. i=2i=2 操作:[5,4,3,1,2][5,1,2,4,3][5,4,3,1,2] \to [5,1,2,4,3]
    2. i=1i=1 操作:[5,1,2,4,3][2,4,5,1,3][5,1,2,4,3] \to [2,4,5,1,3]
    3. i=2i=2 操作:[2,4,5,1,3][2,1,3,4,5][2,4,5,1,3] \to [2,1,3,4,5]