#include<bits/stdc++.h>
#define mod 1000000007
#define mp make_pair
using namespace std;
inline long long read()
{
    long long X=0,flag=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
        {
            flag=-1;
        }
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        X=(X<<1)+(X<<3)+ch-'0';
        ch=getchar();
    }
    return X*flag;
}
long long qpow(long long x,long long y)
{
    long long ans=1;
    while(y)
    {
        if(y%2) ans=ans*x%mod;
        x=x*x%mod;
        y=y/2;
    }
    return ans;
}
long long a[200005];
long long b[200005];
long long c[200005];
bool check(long long q,long long w,long long e,long long r)
{
    if(q>w) return 0;
    w=w-q;
    if(w>e) return 0;
    e=e-w;
    return e==r;
}
int main()
{
    int t=read();
    while(t--)
    {
        int n=read();
        for(int i=1; i<=n; i++)
        {
            a[i]=read();
            if(a[i]<b[i-1]) b[i]=1e18;
            else b[i]=a[i]-b[i-1];
        }
        c[n+1]=0;
        for(int i=n;i>=1;i--)
        {
            if(a[i]<c[i+1]) c[i]=1e18;
            else c[i]=a[i]-c[i+1];
        }
        if(b[n]==0) printf("YES\n");
        else
        {
            int flag=0;
            for(int i=1; i<=n-1; i++)
            {
                if(check(b[i-1],a[i+1],a[i],c[i+2]))
                {
                    flag=1;
                    printf("YES\n");
                    break;
                }
            }
            if(!flag) printf("NO\n");
        }
    }
    return 0;
}

	  	 		    				 		    				 				