#CF2001D. 最长最大最小子序列

最长最大最小子序列

D. 最长最大最小子序列

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

题目描述

给定一个整数序列 a1,a2,,ana_1, a_2, \dots, a_n
SSaa 的所有不含重复元素的非空子序列的集合。
你的目标是找到 SS 中最长的序列。
如果有多个最长的序列,则选择将奇数位置上的项乘以 1-1 后,字典序最小的那个序列。

例如,给定 a=[3,2,3,1]a = [3,2,3,1],则
$S = \{[1],[2],[3],[2,1],[2,3],[3,1],[3,2],[2,3,1],[3,2,1]\}$。
其中最长的序列是 [2,3,1][2,3,1][3,2,1][3,2,1]
[3,2,1][3,2,1] 是答案,因为 [3,2,1][-3,2,-1] 的字典序小于 [2,3,1][-2,3,-1]


定义说明

  • 子序列:序列 cc 是序列 dd 的子序列,如果 cc 可以通过删除 dd 中的若干(可能为零或全部)元素得到。
  • 字典序:序列 cc 字典序小于序列 dd,当且仅当以下之一成立:
    • ccdd 的前缀,且 cdc \ne d
    • ccdd 第一个不同的位置上,cc 的元素小于 dd 的对应元素。

输入

每个测试包含多个测试用例。
第一行输入一个整数 tt1t51041 \le t \le 5 \cdot 10^4)——测试用例数。

每个测试用例的格式如下:

  • 第一行:整数 nn1n31051 \le n \le 3 \cdot 10^5)——序列 aa 的长度。
  • 第二行:nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n)。

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


输出

对于每个测试用例,按以下格式输出答案:

  • 第一行:一个整数 mm,表示答案序列的长度。
  • 第二行:mm 个整数 b1,b2,,bmb_1, b_2, \dots, b_m,表示答案序列。

示例

输入

4
4
3 2 1 3
4
1 1 1 1
9
3 2 1 3 2 1 3 2 1
1
1

输出

3
3 2 1
1
1
3
3 1 2
1
1

另一个示例

输入

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

输出

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

说明

第一个示例a=[3,2,1,3]a = [3,2,1,3]):
$S = \{[1],[2],[3],[1,3],[2,1],[2,3],[3,1],[3,2],[2,1,3],[3,2,1]\}$。
其中最长的序列是 [2,1,3][2,1,3][3,2,1][3,2,1]
[3,2,1][-3,2,-1] 的字典序小于 [2,1,3][-2,1,-3],所以答案是 [3,2,1][3,2,1]

第二个示例a=[1,1,1,1]a = [1,1,1,1]):
S={[1]}S = \{[1]\},所以答案是 [1][1]