#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  int n;
  vector<int> p;
  vector<int> a;
  vector<vector<int> > res;
  for (int run = 0; run < t; run++) {
    cin >> n;
    p.clear();
    a.clear();
    for (int i = 0; i < n; i++) {
      p.push_back(0);
      cin >> p[i];
    }
    int x = 1;
    int point = 0;
    while (point < n) {
      x = 1;
      while (x < n && p[point] == p[point + x]) {
        x++;
      }
      a.push_back(x);
      point += x;
    }
    for (int i = 1; i < a.size(); i++) {
      a[i] += a[i - 1];
    }
    int p1;
    int p2;
    int stop;
    stop = 0;
    while (a[stop] <= n / 2) {
      stop++;
    }
    stop--;
    res.push_back(vector<int>());
    if (stop < 2 || a[0] * 3 + 2 > a[stop]) {
      res[run].push_back(0);
      res[run].push_back(0);
      res[run].push_back(0);
      continue;
    }
    p1 = 0;
    while (true) {
      if (p1 + 1 < stop - 1 && a[p1 + 1] * 3 + 2 <= a[stop]) {
        p1++;
      } else {
        break;
      }
    }
    p2 = 1;
    int gold = 0;
    int silver = 0;
    int bronze = 0;
    for (int i = 0; i <= p1; i++) {
      while (p2 < stop && a[p2] - a[i] <= a[i]) {
        p2++;
      }
      if (p2 >= stop) {
        break;
      }
      if (a[stop] - a[p2] <= a[i]) {
        break;
      } else {
        gold = a[i];
        silver = a[p2] - a[i];
        bronze = a[stop] - a[p2];
        break;
      }
    }
    res[run].push_back(gold);
    res[run].push_back(silver);
    res[run].push_back(bronze);
  }
  for (int i = 0; i < t; i++) {
    cout << res[i][0] << " " << res[i][1] << " " << res[i][2] << endl;
  }
  cin.sync();
  cin.get();
  return 0;
}
