D. Almost All Divisors

We guessed some integer number xx. You are given a list of almost all its divisors. Almost all means that there are all divisors except 11and xx in the list.

Your task is to find the minimum possible integer xx that can be the guessed number, or say that the input data is contradictory and it is impossible to find such number.

You have to answer tt independent queries.

Input

The first line of the input contains one integer tt (1≤t≤251≤t≤25) — the number of queries. Then tt queries follow.

The first line of the query contains one integer nn (1≤n≤3001≤n≤300) — the number of divisors in the list.

The second line of the query contains nn integers d1,d2,…,dnd1,d2,…,dn (2≤di≤1062≤di≤106), where didi is the ii-th divisor of the guessed number. It is guaranteed that all values didi are distinct.

Output

For each query print the answer to it.

If the input data in the query is contradictory and it is impossible to find such number xx that the given list of divisors is the list of almost allits divisors, print -1. Otherwise print the minimum possible xx.

Example

input

Copy

2
8
8 2 12 6 4 24 16 3
1
2

output

Copy

48
4

題解:對於一個數,他所有的因子是對稱分佈的,最小的與最大的相乘就爲該數,次小的與次大的相乘也爲該數,依次類推,那麼我們只要根據已知條件求得原來的數是多少,然後再判斷該數的所有因子除了1和本身是否都在所給信息中存在並且除了1和本身它的因子個數也應等於給出來的n,判斷輸出即可。

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
int main()
{
    int T;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        vector<ll>v;
        for(int i=1;i<=n;i++){
            int x;
            cin>>x;
            v.push_back(x);
        }
        sort(v.begin(),v.end());
        ll ans=v[0]*v[v.size()-1];
        int sum=0,flag=1;
        for(ll i=2;i*i<=ans;i++){
            if(ans%i==0){
                if(find(v.begin(),v.end(),i)==v.end()||find(v.begin(),v.end(),ans/i)==v.end()){flag=0;break;}
                sum+=2;
                if(i*i==ans)
                    sum--;
            }
        }
        if(sum==n&&flag==1)
            cout<<ans<<endl;
        else
            cout<<-1<<endl;
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章