#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using db = double;
using str = string;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
using pd = pair<db, db>;
using vi = vector<int>;
using vb = vector<bool>;
using vl = vector<ll>;
using vd = vector<db>;
using vs = vector<str>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vpd = vector<pd>;
void setIn(str second) { freopen(second.c_str(), "r", stdin); }
void setOut(str second) { freopen(second.c_str(), "w", stdout); }
void setIO(str second) {
  setIn(second + ".inp");
  setOut(second + ".out");
}
const int MOD = 998244353;
const int MX = 2e5 + 5;
const ll INF = 1e15;
const db PI = acos((db)-1);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  ll TC;
  cin >> TC;
  while (TC--) {
    ll n;
    cin >> n;
    vl p;
    vl medal(3, 0);
    ll pre, fol;
    cin >> pre;
    p.push_back(1);
    for (int i = (0); i < (n - 1); ++i) {
      cin >> fol;
      if (fol != pre) {
        p.push_back(1);
      } else
        p.back()++;
      pre = fol;
    }
    if (p.size() < 3) {
      cout << "0 0 0\n";
      continue;
    }
    ll cnt = 0;
    ll lenP = p.size();
    medal[0] = p[0];
    cnt += medal[0];
    ll i = 1;
    while (i < lenP && medal[1] <= medal[0]) {
      medal[1] += p[i];
      i++;
    }
    if (medal[1] <= medal[0] || cnt + medal[1] * 2 + 1 > n / 2) {
      cout << "0 0 0\n";
      continue;
    }
    cnt += medal[1];
    ll tmp = i;
    while (i < lenP && cnt <= n / 2) {
      medal[2] += p[i];
      cnt += p[i];
      i++;
    }
    i--;
    if (i >= tmp && cnt > n / 2) {
      cnt -= p[i];
      medal[2] -= p[i];
    }
    if (cnt > n / 2 || medal[2] == 0) {
      cout << "0 0 0\n";
      continue;
    }
    for (auto& hihi : medal) cout << hihi << ' ';
    cout << '\n';
  }
  return 0;
}
