#include <bits/stdc++.h>
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <unordered_map>
#include <cmath>
#include <chrono>
#include <unordered_set>
#include <bitset>
#include <numeric>
#include <cmath>
#include <set>
#include <list>
#include <stack>
#include <queue>
using namespace std;
#define endl "\n"
#define ll long long
int inf=1e9+7;
int ninf=-inf;
int mod=998244353;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
#ifdef _DEBUG
FILE *fp;
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int tc;
cin>>tc;
while(tc--){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;++i){
cin>>nums[i];
}
for(int i=0;i<n;++i){
if(nums[i]%2!=0){
nums[i]=0;
}
else if(nums[i]%4==0){
nums[i]=2;
}
else{
nums[i]=1;
}
}
for(int i=1;i<n;++i){
nums[i]=nums[i]+nums[i-1];
}
unordered_map<int,int> store;
ll count=0;
store[0]++;
ll total = (n * 1ll * (n + 1)) / 2;
for(int i=0;i<n;++i){
store[nums[i]]++;
count+=store[nums[i]-1];
}
cout<<total-count<<endl;
}
cout<<endl;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjaHJvbm8+CiNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgbGwgbG9uZyBsb25nCmludCBpbmY9MWU5Kzc7CmludCBuaW5mPS1pbmY7CmludCBtb2Q9OTk4MjQ0MzUzOwppbnQgbWFpbigpewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgY2luLnRpZSgwKTsKI2lmZGVmIF9ERUJVRwogIEZJTEUgKmZwOwogIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgogIGludCB0YzsKICBjaW4+PnRjOwogIHdoaWxlKHRjLS0pewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICB2ZWN0b3I8aW50PiBudW1zKG4pOwogICAgZm9yKGludCBpPTA7aTxuOysraSl7CiAgICAgIGNpbj4+bnVtc1tpXTsKICAgIH0KICAgIGZvcihpbnQgaT0wO2k8bjsrK2kpewogICAgICBpZihudW1zW2ldJTIhPTApewogICAgICAgIG51bXNbaV09MDsKICAgICAgfQogICAgICBlbHNlIGlmKG51bXNbaV0lND09MCl7CiAgICAgICAgbnVtc1tpXT0yOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgbnVtc1tpXT0xOwogICAgICB9CiAgICB9CiAgICBmb3IoaW50IGk9MTtpPG47KytpKXsKICAgICAgbnVtc1tpXT1udW1zW2ldK251bXNbaS0xXTsKICAgIH0KICAgIHVub3JkZXJlZF9tYXA8aW50LGludD4gc3RvcmU7CiAgICBsbCBjb3VudD0wOwogICAgc3RvcmVbMF0rKzsKICAgIGxsIHRvdGFsID0gKG4gKiAxbGwgKiAobiArIDEpKSAvIDI7CiAgICBmb3IoaW50IGk9MDtpPG47KytpKXsKICAgICAgc3RvcmVbbnVtc1tpXV0rKzsKICAgICAgY291bnQrPXN0b3JlW251bXNbaV0tMV07CiAgICB9CiAgICBjb3V0PDx0b3RhbC1jb3VudDw8ZW5kbDsKICB9CiAgY291dDw8ZW5kbDsKfQ==