#include<cstdio>
#include<map>
using namespace std;
#define ll long long
inline int read(){
int ans = 0;
char c = getchar();
while(c < '0' || c > '9')c = getchar();
while('0' <= c && c <= '9'){
ans = (ans<<3)+(ans<<1)+c-'0';
c = getchar();
}
return ans;
}
inline void write(ll x){
if(x == 0)return;
write(x/10);
putchar(x%10+'0');
}
int t,n,arr[300005],dp[300005],nxt[300005],pos;
ll ans = 0;
map<int,int> mp[300005],mp2;
int main(){
arr[0] = -1;
t = read();
while(t--){
n = read();
for(int i = 1;i <= n;i++){
arr[i] = read();
mp[i].clear();
dp[i] = 0;
nxt[i] = -1;
}
dp[n+1] = 0;
nxt[n+1] = -1;
mp[n+1].clear();
for(int i = n;i >= 1;i--){
if(mp[i+1].count(arr[i]) > 0){
pos = mp[i+1][arr[i]];
nxt[i] = pos;
mp2 = mp[i];
mp[i] = mp[pos+1];
mp[pos+1] = mp2;
if(pos < n)mp[i][arr[pos+1]] = pos+1;
}
mp[i][arr[i]] = i;
}
ans = 0;
for(int i = n;i >= 1;i--){
if(nxt[i] == -1)continue;
dp[i] = dp[nxt[i]+1]+1;
ans += dp[i];
}
if(ans == 0)putchar('0');
else write(ans);
putchar('\n');
}
return 0;
}
快读快些都是后面加进来的,没用,求条