#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())
{
if(temp == 0)
ans[i] = i;
else
ans[i] = 0;
mp[temp].first = i;
mp[temp].second = 1;
}
else
{
int ind = mp[temp].first, freq = mp[temp].second;
ans[i] = ans[ind] + freq * (i - ind - 1);
mp[temp].first = i;
mp[temp].second = freq + 1;
}
}
long long int final = 0;
for(int i = 0; i < n; i++)
final += ans[i];
printf("%lld\n", final);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKCWludCB0OwoKCWNpbiA+PiB0IDsKCgl3aGlsZSh0LS0pCgl7CgkJaW50IG47CgoJCXNjYW5mKCIlZCIsICZuKTsKCgkJaW50IGFbbl07CgoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlzY2FuZigiJWQiLCAmYVtpXSk7CgkJfQoKCQltYXA8aW50LCBwYWlyPGludCwgaW50PiA+IG1wOwoKCQlsb25nIGxvbmcgaW50IFhPUlsxMDAwMDddLCBhbnNbMTAwMDA3XTsKCQkKCQltcFswXS5maXJzdCA9IC0xOwoJCW1wWzBdLnNlY29uZCA9IDE7CgoJCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJewoJCQlpZihpID09IDApCgkJCQlYT1JbaV0gPSBhW2ldOwoJCQllbHNlIFhPUltpXSA9IFhPUltpIC0gMV0gXiBhW2ldOwoKCQkJaW50IHRlbXAgPSBYT1JbaV07CgoJCQlpZihtcC5maW5kKHRlbXApID09IG1wLmVuZCgpKQoJCQl7CgkJCQlpZih0ZW1wID09IDApCgkJCQkJYW5zW2ldID0gaTsKCQkJCWVsc2UgCgkJCQkJYW5zW2ldID0gMDsKCQkJCQoJCQkJbXBbdGVtcF0uZmlyc3QgPSBpOwoJCQkJbXBbdGVtcF0uc2Vjb25kID0gMTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWludCBpbmQgPSBtcFt0ZW1wXS5maXJzdCwgZnJlcSA9IG1wW3RlbXBdLnNlY29uZDsKCgkJCQlhbnNbaV0gPSBhbnNbaW5kXSArIGZyZXEgKiAoaSAtIGluZCAtIDEpOwoKCQkJCW1wW3RlbXBdLmZpcnN0ID0gaTsKCQkJCW1wW3RlbXBdLnNlY29uZCA9IGZyZXEgKyAxOwoJCQl9CgkJfQoKCQlsb25nIGxvbmcgaW50IGZpbmFsID0gMDsKCgkJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCQkJZmluYWwgKz0gYW5zW2ldOwoKCQlwcmludGYoIiVsbGRcbiIsIGZpbmFsKTsKCX0KCQoJcmV0dXJuIDA7Cn0=