#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
if(!(cin >> T)) return 0;
while(T--){
int N;
cin >> N;
vector<uint32_t> A(N);
for(int i=0;i<N;i++) cin >> A[i];
unordered_map<uint32_t, int64> cnt;
cnt.reserve(N*2 + 10);
cnt.max_load_factor(0.7);
uint32_t px = 0;
// count prefix XORs P[0]..P[N]
cnt[px]++; // P[0] = 0
for(int i=0;i<N;i++){
px ^= A[i];
cnt[px]++;
}
// Total length sum: N*(N+1)*(N+2)/6
int64 n = N;
__int128 totalLen = (__int128)n * (n+1) * (n+2) / 6;
__int128 Z = 0; // sum of C(cnt_v,2)
__int128 C3sum = 0; // sum of C(cnt_v,3)
for(auto &kv : cnt){
int64 k = kv.second;
if(k >= 2) Z += (__int128)k * (k-1) / 2;
if(k >= 3) C3sum += (__int128)k * (k-1) * (k-2) / 6;
}
__int128 ans = totalLen - Z - C3sum;
// print ans
long long out = (long long)ans; // fits in 64-bit for N <= 1e6 (N^3/6 ~ 1.6e17 < 2^63)
cout << out << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGludDY0ID0gbG9uZyBsb25nOwppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBUOwogICAgaWYoIShjaW4gPj4gVCkpIHJldHVybiAwOwogICAgd2hpbGUoVC0tKXsKICAgICAgICBpbnQgTjsKICAgICAgICBjaW4gPj4gTjsKICAgICAgICB2ZWN0b3I8dWludDMyX3Q+IEEoTik7CiAgICAgICAgZm9yKGludCBpPTA7aTxOO2krKykgY2luID4+IEFbaV07CiAgICAgICAgdW5vcmRlcmVkX21hcDx1aW50MzJfdCwgaW50NjQ+IGNudDsKICAgICAgICBjbnQucmVzZXJ2ZShOKjIgKyAxMCk7CiAgICAgICAgY250Lm1heF9sb2FkX2ZhY3RvcigwLjcpOwoKICAgICAgICB1aW50MzJfdCBweCA9IDA7CiAgICAgICAgLy8gY291bnQgcHJlZml4IFhPUnMgUFswXS4uUFtOXQogICAgICAgIGNudFtweF0rKzsgLy8gUFswXSA9IDAKICAgICAgICBmb3IoaW50IGk9MDtpPE47aSsrKXsKICAgICAgICAgICAgcHggXj0gQVtpXTsKICAgICAgICAgICAgY250W3B4XSsrOwogICAgICAgIH0KCiAgICAgICAgLy8gVG90YWwgbGVuZ3RoIHN1bTogTiooTisxKSooTisyKS82CiAgICAgICAgaW50NjQgbiA9IE47CiAgICAgICAgX19pbnQxMjggdG90YWxMZW4gPSAoX19pbnQxMjgpbiAqIChuKzEpICogKG4rMikgLyA2OwoKICAgICAgICBfX2ludDEyOCBaID0gMDsgICAgICAgLy8gc3VtIG9mIEMoY250X3YsMikKICAgICAgICBfX2ludDEyOCBDM3N1bSA9IDA7ICAgLy8gc3VtIG9mIEMoY250X3YsMykKICAgICAgICBmb3IoYXV0byAma3YgOiBjbnQpewogICAgICAgICAgICBpbnQ2NCBrID0ga3Yuc2Vjb25kOwogICAgICAgICAgICBpZihrID49IDIpIFogKz0gKF9faW50MTI4KWsgKiAoay0xKSAvIDI7CiAgICAgICAgICAgIGlmKGsgPj0gMykgQzNzdW0gKz0gKF9faW50MTI4KWsgKiAoay0xKSAqIChrLTIpIC8gNjsKICAgICAgICB9CgogICAgICAgIF9faW50MTI4IGFucyA9IHRvdGFsTGVuIC0gWiAtIEMzc3VtOwogICAgICAgIC8vIHByaW50IGFucwogICAgICAgIGxvbmcgbG9uZyBvdXQgPSAobG9uZyBsb25nKWFuczsgLy8gZml0cyBpbiA2NC1iaXQgZm9yIE4gPD0gMWU2IChOXjMvNiB+IDEuNmUxNyA8IDJeNjMpCiAgICAgICAgY291dCA8PCBvdXQgPDwgJ1xuJzsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==