#include <bits/stdc++.h>
using namespace std;
void preprocess(void) { return; }
const int p = 4;
long long pow1(int x, int y, int pr) {
  int ans = 1;
  while (y > 0) {
    if (y & 1) ans = (ans * 1LL * x) % pr;
    x = (x * 1LL * x) % pr;
    y = y >> 1;
  }
  return ans;
}
vector<int> primes = {201125461, 1000000007, 356581877, 555884807};
vector<int> num = {300100, 921321, 867585, 342342};
vector<int> hsh;
void add(int x, int pos) {
  for (auto i = (0); i < p; i++) {
    hsh[i] += (x * 1LL * pow1(num[i], pos, primes[i])) % primes[i];
    hsh[i] %= primes[i];
    if (hsh[i] < 0) hsh[i] += primes[i];
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.precision(20);
  preprocess();
  int q;
  cin >> q;
  while (q--) {
    int n;
    cin >> n;
    vector<int> ar(n);
    for (auto i = (0); i < n; i++) cin >> ar[i];
    hsh.clear();
    hsh.resize(p, 0);
    map<vector<int>, int> mm;
    stack<int> st;
    int sz = 0;
    mm[hsh]++;
    for (auto i = (0); i < n; i++) {
      if (st.empty()) {
        st.push(ar[i]);
        add(ar[i], sz++);
      } else {
        if (st.top() == ar[i]) {
          st.pop();
          sz--;
          add(-ar[i], sz);
        } else {
          st.push(ar[i]);
          add(ar[i], sz++);
        }
      }
      mm[hsh]++;
    }
    long long ans = 0;
    for (auto x : mm) {
      ans += (x.second * 1LL * (x.second - 1)) / 2;
    }
    cout << ans << endl;
  }
}
