思路是把正数和负数分开排序然后间隔放入原数组
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
const int eps=1e-6;
int t,n,a[N],pos[N],neg[N];
int main(){
cin>>t;
while(t--){
cin>>n;
int cnt_pos=0,cnt_neg=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>0) pos[++cnt_pos]=a[i];
else neg[++cnt_neg]=a[i];
}
if(abs(cnt_pos-cnt_neg)!=n){
if(abs(cnt_pos-cnt_neg)>1){ cout<<"No\n"; continue; }
sort(pos+1,pos+1+cnt_pos);
sort(neg+1,neg+1+cnt_neg,[](int x,int y){ return abs(x)<abs(y); });
if(cnt_pos>cnt_neg){
for(int i=1;i<=n;i++){
if(i%2==1) a[i]=pos[i/2+1];
else a[i]=neg[i/2];
}
}else{
for(int i=1;i<=n;i++){
if(i%2==1) a[i]=neg[i/2+1];
else a[i]=pos[i/2];
}
}
}else sort(a+1,a+1+n);
bool flag=true;
for(int i=2;i<=n;i++){
if(a[i]*a[1]!=a[2]*a[i-1]){
flag=false;
break;
}
}
cout<<(flag?"Yes\n":"No\n");
}
return 0;
}