#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t ;
while(t--)
{
int n;
scanf("%d", &n);
int a[n];
for(int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
map<int, pair<int, int> > mp;
long long int XOR[100007], ans[100007];
mp[0].first = -1;
mp[0].second = 1;
for(int i = 0; i < n; i++)
{
if(i == 0)
XOR[i] = a[i];
else XOR[i] = XOR[i - 1] ^ a[i];
int temp = XOR[i];
if(mp.find(temp) == mp.end())
{
ans[i] = 0;
mp[temp].first = i;
mp[temp].second = 1;
}
else
{
int ind = mp[temp].first, freq = mp[temp].second;
if(temp == 0 && ind == -1)
ans[i] = i;
else if(ind == 0)
ans[i] = ans[ind] + freq * (i - ind - 1);
else
ans[i] = ans[ind] + freq * (i - ind - 1) + (freq - 1);
mp[temp].first = i;
mp[temp].second = freq + 1;
}
}
long long int final = 0;
// for(int i = 0; i < n; i++)
// cout << ans[i] << " ";
// cout << "\n";
for(int i = 0; i < n; i++)
{
final += ans[i];
}
printf("%lld\n", final);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKCWludCB0OwoKCWNpbiA+PiB0IDsKCgl3aGlsZSh0LS0pCgl7CgkJaW50IG47CgoJCXNjYW5mKCIlZCIsICZuKTsKCgkJaW50IGFbbl07CgoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlzY2FuZigiJWQiLCAmYVtpXSk7CgkJfQoKCQltYXA8aW50LCBwYWlyPGludCwgaW50PiA+IG1wOwoKCQlsb25nIGxvbmcgaW50IFhPUlsxMDAwMDddLCBhbnNbMTAwMDA3XTsKCQkKCQltcFswXS5maXJzdCA9IC0xOwoJCW1wWzBdLnNlY29uZCA9IDE7CgoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlpZihpID09IDApCgkJCQlYT1JbaV0gPSBhW2ldOwoJCQllbHNlIFhPUltpXSA9IFhPUltpIC0gMV0gXiBhW2ldOwoKCQkJaW50IHRlbXAgPSBYT1JbaV07CgoJCQlpZihtcC5maW5kKHRlbXApID09IG1wLmVuZCgpKQoJCQl7CgkJCQlhbnNbaV0gPSAwOwoJCQkJCgkJCQltcFt0ZW1wXS5maXJzdCA9IGk7CgkJCQltcFt0ZW1wXS5zZWNvbmQgPSAxOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJaW50IGluZCA9IG1wW3RlbXBdLmZpcnN0LCBmcmVxID0gbXBbdGVtcF0uc2Vjb25kOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZih0ZW1wID09IDAgJiYgaW5kID09IC0xKQogICAgICAgICAgICAgICAgICAgIGFuc1tpXSA9IGk7CiAgICAgICAgICAgICAgICBlbHNlIGlmKGluZCA9PSAwKQogICAgICAgICAgICAgICAgICAgIGFuc1tpXSA9IGFuc1tpbmRdICsgZnJlcSAqIChpIC0gaW5kIC0gMSk7CiAgICAgICAgICAgICAgICBlbHNlCgkJCQkgICAgYW5zW2ldID0gYW5zW2luZF0gKyBmcmVxICogKGkgLSBpbmQgLSAxKSArIChmcmVxIC0gMSk7CgoJCQkJbXBbdGVtcF0uZmlyc3QgPSBpOwoJCQkJbXBbdGVtcF0uc2Vjb25kID0gZnJlcSArIDE7CgkJCX0KCQl9CgoJCWxvbmcgbG9uZyBpbnQgZmluYWwgPSAwOwoKICAgICAgICAvLyBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIC8vICAgICBjb3V0IDw8IGFuc1tpXSA8PCAiICI7CiAgICAgICAgLy8gY291dCA8PCAiXG4iOwogICAgICAgIAoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlmaW5hbCArPSBhbnNbaV07CgkJfQoKCQlwcmludGYoIiVsbGRcbiIsIGZpbmFsKTsKCX0KCQoJcmV0dXJuIDA7Cn0=