241434 - 试吃(eat)

题目描述

在一家大型餐厅里,有 N 位常客(2 ≤ N ≤ 10^5;),他们被编号为1到 N。每位常客都有自己特别喜欢的一种菜品口味 hi(1 ≤ hi ≤ N)。 餐厅的老板希望所有的常客都能喜欢同一种菜品口味,这样在采购食材和制定菜单时就能更加方便和高效。

为了实现这个目标,老板可以组织试吃活动。一次试吃活动会邀请编号从 i 到 j 的连续范围内的所有常客参加。如果在试吃活动中,有一种菜品口味是小组中超过一半的常客喜欢的,那么在这次试吃活动结束后,该小组内的所有常客最终都会喜欢这种菜品口味。如果不存在这样的菜品口味,那么常客们的口味偏好将保持不变。

例如,在一个由16位常客组成的试吃活动中,需要有其中9名或更多的常客喜欢同一种菜品口味,才能使其余常客改变他们的喜好以与之一致。

老板想知道,哪些类型的菜品口味有可能最终让所有的常客都喜欢。老板一次只能组织一次试吃活动,但为了达到所有常客都喜欢同一种菜品口味的目标,他可以根据需要任意多次地组织试吃活动。

输入

从文件 eat.in 中读入数据。 输入的第一行包含一个整数 T,为独立的测试用例的数量(1 ≤ T ≤ 10)。 每一个测试用例的第一行包含 N。 第二行包含 N 个整数,为常客们喜爱的菜品口味 hi。 输入保证所有测试用例的 N 之和不超过2 · 10^5。

输出

输出到文件 eat.out 中。

输出 T 行,对于每个测试用例输出一行。

如果可能使所有常客同时喜欢同一种菜品口味,则以升序输出所有可能的菜品口味,否则输出 −1。

在同一行内输出一列整数时,相邻的数用空格分隔,并确保行末没有多余空格。

样例

输入

5
5
1 2 2 2 3
6
1 2 3 1 2 3
6
1 1 1 2 2 2
3
3 2 3
2
2 1

输出

2
-1
1 2
3
-1
说明

【样例 1 解释】 在输入样例中,有 5 个测试用例。 在第一个测试用例中,仅可能使所有常客喜欢菜品口味2。餐厅的老板可以通过组织一次所有常客的试吃活动来达到一目的。 在第二个测试用例中,可以证明没有常客会改变她们喜爱的菜品口味。

在第三个测试用例中,有可能使所有常客喜欢菜品口味1,可以通过组织三次试吃活动来达到这一目的——首先使常客1到4进行一次试吃活动,随后使常客1到5进行一次试吃活动,随后使常客1到6进行一次试吃活动。以类似的逻辑,依次操作常客3到 6,随后是常客2到6,随后是常客1到6,我们可以使所有常客喜欢菜品口味2。

在第四个测试用例中,有可能使所有常客喜欢菜品口味3,可以通过主持一次所有常客的试吃活动来达到这一目的。

在第五个测试用例中,可以证明没有常客会改变她们喜爱的菜品口味。

【数据范围】

数据约束和子任务测试点2:N =2。

测试点3 − 4:N ≤ 50。

测试点5 − 6:对于所有的1 ≤ i ≤ N−1,有 hi ≤ hi+1。

测试点7 − 10:没有额外限制。

题目参数
时间限制 1 秒
内存限制 256 MB
提交次数 40
通过人数 14
金币数量 2 枚
难度 基础


上一题 下一题