#include <bits/stdc++.h>
using namespace std;
const int N = 300100;
const long long MOD[2] = {(long long)1e9 + 7, (long long)1e9 + 9};
int T, n, a[N];
long long inv[2];
map<pair<long long, long long>, int> cnt;
long long fpow(long long x, long long y, long long mod) {
  if (y == 0) {
    return 1LL;
  }
  if (y % 2 == 0) {
    return fpow(x * x % mod, y / 2, mod);
  } else {
    return x * fpow(x, y - 1, mod) % mod;
  }
}
vector<pair<long long, long long> > make_hashes(vector<long long> u) {
  vector<int> s;
  vector<pair<long long, long long> > ret;
  pair<long long, long long> p = make_pair(0, 0);
  for (int i = 0; i < u.size(); i++) {
    if (s.empty() || s.back() != u[i]) {
      s.push_back(u[i]);
      p.first = (p.first * 991 + u[i]) % MOD[0];
      p.second = (p.second * 997 + u[i]) % MOD[1];
    } else {
      s.pop_back();
      p.first = (p.first - u[i]) * inv[0] % MOD[0];
      p.second = (p.second - u[i]) * inv[1] % MOD[1];
    }
    p.first = (p.first % MOD[0] + MOD[0]) % MOD[0];
    p.second = (p.second % MOD[1] + MOD[1]) % MOD[1];
    ret.push_back(p);
  }
  return ret;
}
long long rec(int l, int r) {
  if (l == r) {
    return 0;
  }
  int m = (l + r) / 2;
  long long ret = 0;
  ret += rec(l, m);
  ret += rec(m + 1, r);
  vector<long long> u;
  vector<long long> v;
  for (int i = m; i >= l; i--) {
    u.push_back(a[i]);
  }
  for (int i = m + 1; i <= r; i++) {
    v.push_back(a[i]);
  }
  vector<pair<long long, long long> > hu = make_hashes(u);
  vector<pair<long long, long long> > hv = make_hashes(v);
  for (int i = 0; i < hu.size(); i++) {
    cnt[hu[i]]++;
  }
  for (int i = 0; i < hv.size(); i++) {
    ret += cnt[hv[i]];
  }
  cnt.clear();
  return ret;
}
int main() {
  inv[0] = fpow(991, MOD[0] - 2, MOD[0]);
  inv[1] = fpow(997, MOD[1] - 2, MOD[1]);
  scanf("%d", &T);
  for (int t = 1; t <= T; t++) {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
      scanf("%d", &a[i]);
    }
    printf("%lld\n", rec(0, n - 1));
  }
  return 0;
}
