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

const long long MOD=1e9+7;
const int N=2e5+5;

int t,n;
long long a[N],mii[2][N],miv[2][N],at[N];
bool ok;

int main(){
	scanf("%d", &t);
	while(t--){
		ok=false;
		scanf("%d", &n);
		for(int i=0;i<n;i++) scanf("%lld", &a[i]);
		if(n==2){
			if(a[0]==a[1]) printf("YES\n");
			else printf("NO\n");
			continue;
		}
		mii[0][0]=a[0];
		mii[0][1]=a[0];
		mii[1][1]=a[1]-a[0];
		at[0]=a[0];
		at[1]=a[1]-a[0];
		for(int i=2;i<n;i++){
			at[i]=a[i]-at[i-1];
			mii[i&1][i]=min(mii[i&1][i-1],at[i]);
			mii[(i+1)&1][i]=mii[(i+1)&1][i-1];
		}
		miv[(n-1)&1][n-1]=at[n-1];
		miv[(n-1)&1][n-2]=at[n-1];
		miv[(n-2)&1][n-1]=2*(a[n-2]-a[n-3]);
		miv[(n-2)&1][n-2]=at[n-2];
		for(int i=n-3;i>=0;i--){
			miv[i&1][i]=min(miv[i&1][i+1],at[i]);
			miv[(i+1)&1][i]=miv[(i+1)&1][i+1];
		}
		if(min(mii[0][n-1],mii[1][n-1])>=0 && at[n-1]==0){
			printf("YES\n");
			continue;
		}
		if(a[0]>=a[1] && min(miv[1][2]+2*(a[0]-a[1]),miv[0][2]+2*(a[1]-a[0]))>=0 && at[n-1]+2*(a[n&1]-a[(n-1)&1])==0){
			printf("YES\n");
			continue;
		}
		if(a[n-2]==a[n-1]-at[n-3] && min(mii[0][n-3],mii[1][n-3])>=0 && at[n-3]<=a[n-1]){
			printf("YES\n");
			continue;
		}
		for(int i=1;i<n-2;i++){
			if(a[i]>=a[i+1]-at[i-1] && min(miv[(i+1)&1][i+2]+2*(a[i]-a[i+1]),miv[i&1][i+2]+2*(a[i+1]-a[i]))>=0 && min(mii[0][i-1],mii[1][i-1])>=0 && at[i-1]<=a[i+1] && at[n-1]+2*(a[i+((n+i)&1)]-a[i+((n+i-1)&1)])==0){
				printf("YES\n");
				ok=true;
				break;
			}
		}
		
		if(!ok) printf("NO\n");
	}
	return 0;
}
