#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 2e9
#define EPS 1e-9
#define MAX LLONG_MAX
#define MIN LLONG_MIN
#define F first
#define S second
#define MP make_pair
#define PB push_back
#define EB emplace_back
#define endl "\n"
#define FOR(i,a,b) for (long long i = a; i < b; i++)
#define REV(i,a,b) for (long long i = a; i >= b; i--)
#define mset(a,v) memset(a, v, sizeof(a))
typedef std::pair<int, int> pii;
typedef std::vector<long long> vi;
typedef std::vector<vi> vvi;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while(t--) {
int N;
cin >> N;
int A[N];
FOR(i,0,N) {
cin >> A[i];
A[i] = abs(A[i]);
}
int dp[100];
mset(dp,0);
ll res = 0;
FOR(i,0,N) {
int tmp[100];
mset(tmp,0);
A[i] = A[i]%100;
tmp[A[i]]++;
if(A[i]%4==0 || A[i]%2 == 1) {
res++;
}
FOR(j,0,100) {
if(dp[j]!=0){
if(j*A[i]%4==0 || j*A[i]%2==1) {
res += dp[j];
}
}
tmp[(j*A[i])%100] += dp[j];
}
FOR(j,0,100) {
dp[j] = tmp[j];
// if(tmp[j]!=0) {
// cout << tmp[j] << " ";
// }
}
}
cout << res << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBJTkYgMmU5CiNkZWZpbmUgRVBTIDFlLTkKI2RlZmluZSBNQVggTExPTkdfTUFYCiNkZWZpbmUgTUlOIExMT05HX01JTgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIE1QIG1ha2VfcGFpcgojZGVmaW5lIFBCIHB1c2hfYmFjawojZGVmaW5lIEVCIGVtcGxhY2VfYmFjawojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIEZPUihpLGEsYikgZm9yIChsb25nIGxvbmcgaSA9IGE7IGkgPCBiOyBpKyspCiNkZWZpbmUgUkVWKGksYSxiKSBmb3IgKGxvbmcgbG9uZyBpID0gYTsgaSA+PSBiOyBpLS0pCiNkZWZpbmUgbXNldChhLHYpIG1lbXNldChhLCB2LCBzaXplb2YoYSkpCnR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgc3RkOjp2ZWN0b3I8bG9uZyBsb25nPiB2aTsKdHlwZWRlZiBzdGQ6OnZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGludCBOOwogICAgICAgIGNpbiA+PiBOOwogICAgICAgIGludCBBW05dOwogICAgICAgIEZPUihpLDAsTikgewogICAgICAgICAgICBjaW4gPj4gQVtpXTsKICAgICAgICAgICAgQVtpXSA9IGFicyhBW2ldKTsKICAgICAgICB9CiAgICAgICAgaW50IGRwWzEwMF07CiAgICAgICAgbXNldChkcCwwKTsKICAgICAgICBsbCByZXMgPSAwOwogICAgICAgIEZPUihpLDAsTikgewogICAgICAgICAgICBpbnQgdG1wWzEwMF07CiAgICAgICAgICAgIG1zZXQodG1wLDApOwogICAgICAgICAgICBBW2ldID0gQVtpXSUxMDA7CiAgICAgICAgICAgIHRtcFtBW2ldXSsrOwogICAgICAgICAgICBpZihBW2ldJTQ9PTAgfHwgQVtpXSUyID09IDEpIHsKICAgICAgICAgICAgICAgIHJlcysrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEZPUihqLDAsMTAwKSB7CiAgICAgICAgICAgICAgICBpZihkcFtqXSE9MCl7CiAgICAgICAgICAgICAgICAgICAgaWYoaipBW2ldJTQ9PTAgfHwgaipBW2ldJTI9PTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IGRwW2pdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRtcFsoaipBW2ldKSUxMDBdICs9IGRwW2pdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEZPUihqLDAsMTAwKSB7CiAgICAgICAgICAgICAgICBkcFtqXSA9IHRtcFtqXTsKLy8gICAgICAgICAgICAgICAgaWYodG1wW2pdIT0wKSB7Ci8vICAgICAgICAgICAgICAgICAgICBjb3V0IDw8IHRtcFtqXSA8PCAiICI7Ci8vICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IHJlcyA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K