#CF2234A. 欧几里得、序列与两个数 / Euclid, Sequence and Two Numbers

欧几里得、序列与两个数 / Euclid, Sequence and Two Numbers

题目描述

对于两个正整数 x≥yx \geq y,定义其长度为 kk(k≥2k \geq 2)的欧几里得算法序列为以下正整数序列:

  • a1,a2,…,aka_1, a_2, \ldots, a_k,其中 a1=xa_1 = x,a2=ya_2 = y,且对于任意 ii(1≤i≤k−21 \leq i \leq k - 2),满足 ai+2=(ai mod ai+1)a_{i+2} = (a_i \bmod a_{i+1})。

例如,对于 x=13,y=8,k=4x = 13, y = 8, k = 4,对应的欧几里得算法序列为 a=[13,8,5,3]a = [13, 8, 5, 3](a3=13 mod 8=5a_3 = 13 \bmod 8 = 5,a4=8 mod 5=3a_4 = 8 \bmod 5 = 3)。

给定一个序列 b1,b2,…,bnb_1, b_2, \ldots, b_n,判断是否可以重排其元素,使其成为某两个正整数 x≥yx \geq y 的欧几里得算法序列。

x mod yx \bmod y 表示 xx 除以 yy 的余数。

输入格式

每个测试包含多组测试数据。第一行包含测试数据组数 tt(1≤t≤5001 \le t \le 500)。接下来是每组测试数据的描述。

每组测试数据的第一行包含一个整数 nn(2≤n≤1002 \leq n \leq 100),表示序列的长度。

每组测试数据的第二行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤1091 \leq b_i \leq 10^9),表示序列 bb。

输出格式

对于每组测试数据,如果可以重排序列 bb 的元素使得存在合适的正整数对 x≥yx \geq y,则在一行中输出 x,yx, y。否则,在一行中输出 −1-1。

如果有多个合适的数对 x,yx, y,输出任意一个均可。

6
2
1 1
2
1 2
4
1 2 3 4
3
6 4 2
4
3 8 13 5
3
1 1 1
1 1
2 1
-1
6 4
13 8
-1

提示

在第一个测试数据中,数对 (1,1)(1, 1) 是合适的:当 x=1,y=1,k=2x = 1, y = 1, k = 2 时,a1=x=1,a2=y=1a_1 = x = 1, a_2 = y = 1,得到序列 a=[1,1]=ba = [1, 1] = b。

在第三个测试数据中,可以证明不存在合适的数对 (x,y)(x, y)。

在第四个测试数据中,数对 (6,4)(6, 4) 是合适的:当 x=6,y=4,k=3x = 6, y = 4, k = 3 时,$a_1 = x = 6, a_2 = y = 4, a_3 = (a_1 \bmod a_2) = (6 \bmod 4) = 2$,得到序列 a=[6,4,2]=ba = [6, 4, 2] = b。