#include <bits/stdc++.h>
using namespace std;
template <class T>
bool ckmin(T& a, const T& b) {
  return b < a ? a = b, 1 : 0;
}
template <class T>
bool ckmax(T& a, const T& b) {
  return a < b ? a = b, 1 : 0;
}
const pair<long long, long long> MOD = {1000000007, 998244353};
const pair<long long, long long> BASE = {543212, 654321};
long long mpow(long long base, long long exp, long long md) {
  if (exp == 0) return 1;
  long long res = mpow(base, exp / 2, md);
  res *= res;
  res %= md;
  if (exp & 1) {
    res *= base;
    res %= md;
  }
  return res;
}
long long inv(long long k, long long md) { return mpow(k, md - 2, md); }
const pair<long long, long long> INVBASE = {inv(BASE.first, MOD.first),
                                            inv(BASE.second, MOD.second)};
struct hashStack {
  pair<long long, long long> hsh;
  stack<long long> second;
  hashStack() {
    hsh = {0, 0};
    second = stack<long long>();
  }
  void push(long long x) {
    hsh.first *= BASE.first;
    hsh.first %= MOD.first;
    hsh.first += x;
    if (hsh.first >= MOD.first) hsh.first -= MOD.first;
    hsh.second *= BASE.second;
    hsh.second %= MOD.second;
    hsh.second += x;
    if (hsh.second >= MOD.second) hsh.second -= MOD.second;
    second.push(x);
  }
  long long top() { return second.top(); }
  void pop() {
    long long x = top();
    hsh.first += MOD.first - x;
    if (hsh.first >= MOD.first) hsh.first -= MOD.first;
    hsh.first *= INVBASE.first;
    hsh.first %= MOD.first;
    hsh.second += MOD.second - x;
    if (hsh.second >= MOD.second) hsh.second -= MOD.second;
    hsh.second *= INVBASE.second;
    hsh.second %= MOD.second;
    second.pop();
  }
};
void put(hashStack& st, long long val) {
  if (st.second.empty() || st.top() != val) {
    st.push(val);
  } else {
    st.pop();
  }
}
const int MAX_N = 300005;
int n;
int arr[MAX_N];
long long solve(int l, int r) {
  if (l == r) return 0;
  int mid = (l + r) / 2;
  long long ans = 0;
  map<pair<long long, long long>, int> after;
  hashStack second = hashStack();
  for (int i = mid + 1; i <= r; i++) {
    put(second, arr[i]);
    after[second.hsh]++;
  }
  hashStack sr = hashStack();
  for (int i = mid; i >= l; i--) {
    put(sr, arr[i]);
    if (after.count(sr.hsh)) ans += after[sr.hsh];
  }
  ans += solve(l, mid) + solve(mid + 1, r);
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> arr[i];
    cout << solve(0, n - 1) << "\n";
  }
}
