#include <stdio.h>
int main() {
//考虑操作中的不变量:操作的本质就是在相隔变量中的转移,所以自始至终,奇数位的和不变,偶数位的和不变
int t;
scanf("%d",&t);
int n,a[200005];
int ave,i,sum1=0,sum2=0,sum=0;
while(t--){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
if(sum%n!=0){
printf("NO\n");
}
else{
if(n%2==0){
for(i=1;i<=n-1;i=i+2){
sum1+=a[i];
}
for(i=2;i<=n;i=i+2){
sum2+=a[i];
}
ave=(sum1+sum2)/n;
if(sum1==ave*(n/2)&&sum2==ave*(n/2)){
printf("YES\n");
}
else printf("NO\n");
}
else{
for(i=1;i<=n;i=i+2){
sum1+=a[i];
}
for(i=2;i<=n-1;i=i+2){
sum2+=a[i];
}
ave=sum/n;
if(sum1==(n+1)/2*ave&&sum2==(n-1)/2*ave)
printf("YES\n");
else printf("NO\n");
}
}
sum=0;
sum1=0;
sum2=0;
}
return 0;
}