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

int check(vector<int> arr) {
    for(int i = 0; i < arr.size() - 1; i++) {
        if(arr[i] > arr[i + 1]) return 0;
        else arr[i + 1] -= arr[i];
    }
    return arr[arr.size() - 1] == 0;
}
 
void solve() {
    int n; 
    cin >> n;
    vector<int> arr(n); 
    for(int i = 0; i < n; i++) cin >> arr[i]; 
    
    if(n == 1) {
        cout << "NO\n";
        return ; 
    }
    if(check(arr)) {
        cout << "YES\n";
        return ;
    }
    swap(arr[0], arr[1]);
    if(check(arr)) { 
        cout << "YES\n"; 
        return ;
    }
    swap(arr[0], arr[1]);
    swap(arr[n - 1], arr[n - 2]);
    if(check(arr)) { 
        cout << "YES\n"; 
        return ;
    }
    swap(arr[n - 1], arr[n - 2]);

    vector<int> pre(n, 0), sf(n, 0), t = arr;
    pre[0] = arr[0]; sf[n - 1] = arr[n - 1];
    for(int i = 1; i < n; i++) {
        if(pre[i - 1] == -1 || t[i] < t[i - 1]) {
            pre[i] = -1;
        }
        else {
            t[i] -= t[i - 1];
            t[i - 1] = 0;
            pre[i] = t[i];
        }
    }
    t = arr;
    for(int i = n - 2; i >= 0; i--) {
        if(sf[i + 1] == -1 || t[i] < t[i + 1]) {
            sf[i] = -1;
        }
        else {
            t[i] -= t[i + 1];
            t[i + 1] = 0;
            sf[i] = t[i];
        }
    }
    for(int i = 1; i + 2 < n; i++) {
        if(pre[i - 1] == -1 || sf[i + 2] == -1) continue;
        vector<int> temp{pre[i - 1], arr[i + 1], arr[i], sf[i + 2]};
        if(check(temp)) { 
            cout << "YES\n"; 
            return; 
        }
    }
    cout << "NO\n";
}

int main() {
    ios::sync_with_stdio(false);
    int t; 
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}