#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;
}