DIVISIBLE SUBARRAY (2nd test case shows wrong answer ,please check the code)

#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll pigeonholeprinciple(ll*a,ll n)
{ ll frequency[n]={0}; frequency[0]=1;
ll cumsum[n];
cumsum[0]=(a[0]+n)%n;
for(ll i=1;i<n;i++)
{cumsum[i] = ((cumsum[i-1]+n)%n + (a[i]+n)%n)%n;
frequency[(cumsum[i]+n)%n]++;
}
ll countr=0;
frequency[(a[0]+n)%n]++;

 for(ll i=0;i<n;i++)
 {   ll num = frequency[i];
     if(frequency[i]>1)
      countr = countr + ((num)*(num-1))/2;
 }
 
 return countr;

}

int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);

ll q; cin>>q;
for(ll i=1;i<=q;i++)
{
    ll n; cin>>n; ll a[n];

    for(ll i=0;i<n;i++)
       cin>>a[i];

     cout<<pigeonholeprinciple(a,n)<<endl;
}
return 0;

}

You don’t need that cumsum[] prefix-sum array.
It is simple as this. Or your modified code