//editor: Jan Tang //problem: #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define set0(a) memset(a,0,sizeof(a)); #define CIN(a,n) for(int i=1;i<=n;i++) cin>>a[i]; typedef long long ll; typedef unsigned long long ull; const int Mod = 1e9+7; const int maxn = 300005; const int inf = 0x3f3f3f3f; int m,n, a[maxn], ans[maxn], b[maxn]; set s; set::iterator it; /*==============================head==========================*/ int main(){ int T; cin >> T; while(T-- > 0){ s.clear(); cin >> n; CIN(a, n); int tmp = 1; int mad = a[1], flag = 0; for(int i = 2; i <= n; i++) mad = __gcd(mad, a[i]); for(int i = 2; i <= n; i++){ for(int j = 1;j < i; j++){ if(__gcd(a[i], a[j]) == mad) flag++; s.insert(__gcd(a[i], a[j])); } int len = s.size(), tmp = 0; for(it = s.begin(); it != s.end(); ++it){ b[++tmp] = __gcd(a[i], *it); } for(int k = 1; k <= tmp; k++){ if(b[k] == mad) flag++; s.insert(b[k]); b[k] = 0; } } if(flag == 1) s.erase(mad); cout << *s.begin(); for(it = s.begin(); it != s.end(); ++it){ if(it == s.begin()) continue; printf(" %d", *it); } cout<