#include <bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 10;
template <class T>
inline void read(T &res) {
  char c;
  T flag = 1;
  while ((c = getchar()) < '0' || c > '9')
    if (c == '-') flag = -1;
  res = c - '0';
  while ((c = getchar()) >= '0' && c <= '9') res = res * 10 + c - '0';
  res *= flag;
}
long long min(long long x, long long y) { return x < y ? x : y; }
long long max(long long x, long long y) { return x > y ? x : y; }
const int N = 20;
void foid(int a[N]) {
  int i = 0, j = N - 1, t = a[0];
  while (i < j) {
    while (i < j && a[i] % 2 == 1) i++;
    while (i < j && a[j] % 2 == 0) j--;
    if (i < j) swap(a[i], a[j]);
  }
  for (int i = 0; i < N; i++) {
    printf("%d ", a[i]);
  }
}
int a[maxn], pos[maxn], ans[maxn];
int main() {
  int t, n;
  cin >> t;
  while (t--) {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    int mid = n >> 1;
    int g = 1, s = 1, b = 0;
    for (int i = 2; i <= mid; i++) {
      if (a[i] == a[i - 1])
        g++;
      else
        break;
    }
    for (int i = g + 2; i <= mid; i++) {
      if (a[i] == a[i - 1] || s <= g)
        s++;
      else
        break;
    }
    b = mid - g - s;
    if (a[mid] != a[mid + 1]) {
      if (g < s && g < b)
        cout << g << ' ' << s << ' ' << b << endl;
      else
        cout << "0 0 0" << endl;
    } else {
      for (int i = mid + 1; i >= g + s + 1; i--) {
        if (a[i] == a[i - 1])
          b--;
        else
          break;
      }
      if (g < s && g < b)
        cout << g << ' ' << s << ' ' << b << endl;
      else
        cout << "0 0 0" << endl;
    }
  }
  return 0;
}
