#include <bits/stdc++.h>
using namespace std;
const long long oo = 1e8;
const double pi = 3.1415926535897;
const double EPS = (1e-7);
int dcmp(double x, double y) { return fabs(x - y) <= EPS ? 0 : x < y ? -1 : 1; }
struct edge {
  int from, to, w;
  edge() {}
  edge(int x, int y, int we) : from(x), to(y), w(we) {}
  bool operator<(const edge &rhs) const { return w > rhs.w; }
};
const int N = 4e5 + 5;
int A[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    int lim = n / 2;
    for (int i = 0; i < n; i++) {
      cin >> A[i];
    }
    if (lim < 3) {
      cout << "0 0 0\n";
      continue;
    }
    vector<int> team;
    for (int i = 0; i < lim; i++) {
      team.push_back(A[i]);
    }
    int idx = lim - 1;
    while (idx >= 0 && team[idx] == A[lim]) {
      team.pop_back();
      idx--;
    }
    int gold = 1;
    idx = 1;
    while (idx < ((int)((team).size())) && team[idx] == team[idx - 1]) {
      gold++;
      idx++;
    }
    int idx2 = ((int)((team).size())) - 2;
    int bronz = 1;
    while (idx2 >= 0 && team[idx2] == team[idx2 + 1] || bronz <= gold) {
      bronz++;
      idx2--;
    }
    int silv = idx2 - idx + 1;
    if (gold + silv + bronz <= lim && gold > 0 && silv > 0 && bronz > 0 &&
        gold < silv && gold < bronz)
      cout << gold << " " << silv << " " << bronz << "\n";
    else
      cout << "0 0 0\n";
  }
}
