// divisible subarray using pigeon hole
#include<iostream>
#include<math.h>
#include<cstring>
#define ll long long
#define size 100000
#define f(i,j,n) for(i=j;i<n;i++)
#define MOD 1000000007
using namespace std;
int main(){
int t,n;
cin>>t;
while(t--){
cin>>n;
int a[n],p[n+1],dup[n]={0};
p[0]=0;
dup[0]=1;
for(int i=0;i<n;i++){
cin>>a[i];
p[i+1]=(p[i]+a[i]%n)%n;//taking subarray sum%n;
dup[p[i+1]]++;
}
//subarray created
// now find all the no.s and take two out of all present duplicates in p[]
int ans=0,c;
for(int i=0;i<n;i++){
c=dup[i];
if((c>=2)){
ans+=(c*(c-1)/2);
}
}
cout<<ans<<endl;
}
return 0;
}
Ly8gZGl2aXNpYmxlIHN1YmFycmF5IHVzaW5nIHBpZ2VvbiBob2xlIAojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8bWF0aC5oPgojaW5jbHVkZTxjc3RyaW5nPgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHNpemUgMTAwMDAwCiNkZWZpbmUgZihpLGosbikgZm9yKGk9ajtpPG47aSsrKSAKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCl7CiAgICBpbnQgdCxuOwogICAgY2luPj50OwogICAgd2hpbGUodC0tKXsKICAgICAgICBjaW4+Pm47CiAgICAgICAgaW50IGFbbl0scFtuKzFdLGR1cFtuXT17MH07CiAgICAgICAgcFswXT0wOwogICAgICAgIGR1cFswXT0xOwogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgICAgIHBbaSsxXT0ocFtpXSthW2ldJW4pJW47Ly90YWtpbmcgc3ViYXJyYXkgc3VtJW47CiAgICAgICAgICAgIGR1cFtwW2krMV1dKys7CiAgICAgICAgfQogICAgICAgIC8vc3ViYXJyYXkgY3JlYXRlZAogICAgICAgIC8vIG5vdyBmaW5kIGFsbCB0aGUgbm8ucyBhbmQgdGFrZSB0d28gb3V0IG9mIGFsbCBwcmVzZW50IGR1cGxpY2F0ZXMgaW4gcFtdCiAgICAgICAgaW50IGFucz0wLGM7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIGM9ZHVwW2ldOwogICAgICAgICAgICBpZigoYz49MikpewogICAgICAgICAgICAgICAgYW5zKz0oYyooYy0xKS8yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CgogICAgfQogICAgcmV0dXJuIDA7Cn0=