#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; // using mint=modint998244353; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; #line 2 "math/isqrt.hpp" #include using namespace std; // floor(sqrt(n)) を返す (ただし n が負の場合は 0 を返す) long long isqrt(long long n) { if (n <= 0) return 0; long long x = sqrt(n); while ((x + 1) * (x + 1) <= n) x++; while (x * x > n) x--; return x; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin>>T; while(T--){ int N; cin>>N; vll A(N); rep(i,0,N)cin>>A[i]; rep(i,0,N){ rep(j,i+1,N){ ll g=gcd(A[i],A[j]); A[i]/=g; A[j]/=g; } } bool ok=true; rep(i,0,N){ ll sq=isqrt(A[i]); if(A[i]!=sq*sq){ ok=false; break; } } if(ok)cout<<"Yes\n"; else cout<<"No\n"; } }