#CF2077D. 最大多边形

最大多边形

D. 最大多边形

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

给定一个长度为 nn 的数组 aa,请找出 aa字典序最大的子序列 ss,使得 ss 能作为一个多边形的边长。

回忆:ss 能作为多边形的边长当且仅当 s3|s| \ge 3

$$2 \cdot \max(s_1, s_2, \dots, s_{|s|}) < s_1 + s_2 + \dots + s_{|s|}. $$

如果不存在这样的子序列 ss,则输出 1-1


定义

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

输入

每个测试包含多个测试用例。
第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。

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

  • 第一行包含一个整数 nn3n21053 \le n \le 2 \cdot 10^5)——数组 aa 的长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)——数组 aa

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


输出

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

如果答案存在:

  • 第一行输出一个整数 kk1kn1 \le k \le n)——子序列 ss 的长度。
  • 第二行输出 kk 个整数 s1,s2,,sks_1, s_2, \dots, s_k1si1091 \le s_i \le 10^9ssaa 的子序列)——子序列 ss。注意输出的是值,而不是下标。

否则,输出一行整数 1-1


示例

输入:

5
3
3 1 2
4
1 4 2 3
6
1 6 4 5 3 2
6
43 12 99 53 22 4
7
9 764 54 73 22 23 1

输出:

-1
3
4 2 3 
4
6 5 3 2 
5
43 99 53 22 4 
4
54 73 23 1 

示例解释

  • 第一个测试用例:不存在可以作为多边形边长的子序列。
  • 第二个测试用例:有两个可以作为多边形边长的子序列:[1,4,2,3][1,4,2,3][4,2,3][4,2,3]。后者是字典序更大的子序列。