#include<bits/stdc++.h>
#define pb push_back
#define eb emplace_back
#define int long long
#define F(i,x,y) for(int i=x;i<=y;++i)
#define G(i,x,y) for(int i=x;i>=y;--i)
#define FD(i,x,y) for(int i=x;i*i<=y;++i)
#define GD(i,x,y) for(int i=x;i*i>=y;--i)
#define adde(x,y) z[x].eb(y);
#define Adde(x,y) z[x].eb(y),z[y].eb(x);
#define addew(x,y,w) z[x].eb(y,w)
#define Addew(x,y,w) z[x].eb(y,w),z[y].eb(x,w)
#define FIMX(X) memset(X,0x3f,sizeof X)
#define FIMI(X) memset(X,-0x3f,sizeof X)
#define FI0(X) memset(X,0,sizeof X)
#define FIN(X) memset(X,-1,sizeof X)
#define rng(X) X.begin(),X.end()
#define PII pair<int,int>
#define PDD pair<double,double>
#define PIII tuple<int,int,int>
#define VI vector<int>
#define VII vector<PII>
#define VID vector<pair<int,double>>
#define VDD vector<PDD>
using namespace std;
char *p1,*p2,buf[1000100];
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000096,stdin),p1==p2)?EOF:*p1++)
inline int read(){
int x=0;char c=gc();
while(c<48)c=gc();
while(c>47)x=(x<<3)+(x<<1)+(c&15),c=gc();
return x;
}
char pool[1000100];
int idxtop=0;
void flush(){
int i;
for(i=0;i+8<idxtop;i+=8){
putchar(pool[i]);
putchar(pool[i+1]);
putchar(pool[i+2]);
putchar(pool[i+3]);
putchar(pool[i+4]);
putchar(pool[i+5]);
putchar(pool[i+6]);
putchar(pool[i+7]);
}
for(;i<idxtop;++i)putchar(pool[i]);
idxtop=0;
}
void print(int x){
int xv[20],nt=0;
do{
xv[++nt]=(x%10)^48;
x/=10;
}while(x);
for(int i=nt;i;--i)pool[idxtop++]=xv[i];
if(idxtop>998244)flush();
}
void printo(char o){
pool[idxtop++]=o;
if(idxtop>998244)flush();
}
const int N=500100;
int a[N],col[N],pref[N];
VI color[N];
mt19937_64 mt;
uniform_int_distribution<int> rnd(-3e16,3e16);
void solve(unsigned __testid = 1) {
int n=read();
F(i,1,n)a[i]=read(),pref[i]=0;
F(i,1,n)color[a[i]].clear();
F(i,1,n)color[a[i]].eb(i);
F(i,1,n)if(color[i].size()){
F(j,0,(int)color[i].size()-1){
int key=rnd(mt);
if(j+1<color[i].size())col[color[i][j]]=key,pref[i]+=key;
else col[color[i][j]]=-pref[i];
}
}
F(i,1,n)col[i]+=col[i-1];
unordered_map<int,int>mp;
int res=0;mp[0]=1;
F(i,1,n)res+=mp[col[i]],++mp[col[i]];
print(res);printo(10);
}
void Presolve() {
}
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int T;
cin>>T;
Presolve();
F(_,1,T)
solve((unsigned)_);
flush();
return 0;
}