GCD is Funny

Accepts: 9
Submissions: 1181
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
Alex发明了一个有趣的游戏. 一开始他在黑板上写了$n$个正整数, 然后他开始重复进行如下的操作:

1. 他选择黑板上三个数字$a$, $b$和$c$, 把他们从黑板上擦掉.
2. 他从这三个数$a$, $b$和$c$中选择了两个数, 并计算出他们的最大公约数, 记这个数为$d$ ($d$ 可以是$\gcd(a,b)$, $\gcd(a,c)$或者$\gcd(b, c)$).
3. 他在黑板上写下两次数字$d$.

显然, 在操作$n-2$次后, 黑板上只会留下两个相同的数字. Alex想要知道哪些数字可以最终留在黑板上.
输入描述
输入包含多组数据, 第一行包含一个整数$T$ $(1 \le T \le 100)$表示测试数据组数. 对于每组数据:

第一行包含一个整数$n$ $(3 \le n \le 500)$表示一开始黑板上数字个数. 接下来一行包含$n$个整数: $a_1, a_2, ..., a_n$ $(1 \le a_i \le 1000)$表示黑板上写的数字.
输出描述
对于每组数据, 升序输出那些可能留在黑板上的数.
输入样例
3
4
1 2 3 4
4
2 2 2 2
5
5 6 2 3 4
输出样例
1 2
2
1 2 3