#include <bits/stdc++.h>
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    int testCases;
    cin >> testCases;
 
    while (testCases--) {
        int n;
        cin >> n;
 
        vector<int> arr(n + 1);
        for (int i = 1; i <= n; i++) cin >> arr[i];
 
        vector<int> prefixXor(n + 1, 0);
        for (int i = 1; i <= n; i++) {
            prefixXor[i] = prefixXor[i - 1] ^ arr[i];
        }
 
        vector<int> leftZeroXorCount(n + 1, 0);
        vector<int> rightZeroXorCount(n + 1, 0);
 
        int currentXor = 0;
        unordered_map<int, int> xorFrequency;
        xorFrequency[currentXor] = 1;
 
        long long totalZeroXorSubarrays = 0;
 
        for (int i = 1; i <= n; i++) {
            currentXor ^= arr[i];
            totalZeroXorSubarrays += xorFrequency[currentXor];
            xorFrequency[currentXor]++;
        }
 
        for (int i = 1; i <= n; i++) {
            int count = 0;
            for (int l = 1; l <= i; l++) {
                if ((prefixXor[i] ^ prefixXor[l - 1]) == 0) {
                    count++;
                }
            }
            leftZeroXorCount[i] = count;
        }
 
        for (int i = n; i >= 1; i--) {
            int count = 0;
            for (int r = i; r <= n; r++) {
                if ((prefixXor[r] ^ prefixXor[i - 1]) == 0) {
                    count++;
                }
            }
            rightZeroXorCount[i] = count;
        }
 
        for (int i = 1; i < n; i++) {
            totalZeroXorSubarrays += (long long)leftZeroXorCount[i] * rightZeroXorCount[i + 1];
        }
 
        long long totalTriplets = (1LL * n * (n + 1) * (n + 2)) / 6;
 
        long long result = totalTriplets - totalZeroXorSubarrays;
 
        cout << result << "\n";
    }
 
    return 0;
}