#include <bits/stdc++.h>
using namespace std;
long long int nChooseR(int n, int k);
long long int gcd(long long int a, long long int b);
vector<string> split(string target, char c);
bool isPrime(long long int h);
int n, m, x, y, l, r, k, t, a[200005 * 2];
long long int ans;
int mod = (int)(1e9 + 7);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> t;
  while (t--) {
    cin >> n;
    for (int i = 0; i < (int)(n); i++) cin >> a[i + 1];
    int g = 0, b = 0, s = 0;
    int mid = (n) / 2;
    l = 1;
    while (mid && a[mid] == a[mid + 1]) mid--;
    r = mid;
    while (l < mid && a[l] == a[l + 1]) l++;
    g = l;
    while (l < mid && (s <= g || a[l] == a[l + 1])) s++, l++;
    b = r - g - s;
    if (g >= b || g >= s || s <= 0 || b <= 0 || g <= 0)
      cout << "0 0 0\n";
    else
      cout << g << " " << s << " " << b << "\n";
  }
}
long long int nChooseR(int n, int k) {
  if (k > n) return 0;
  if (k * 2 > n) k = n - k;
  if (k == 0) return 1;
  long long int result = n;
  for (int i = 2; i <= k; ++i) {
    result *= (n - i + 1);
    result /= i;
  }
  return result;
}
long long int gcd(long long int a, long long int b) {
  return b == 0 ? a : gcd(b, a % b);
}
vector<string> split(string target, char c) {
  string d = "";
  vector<string> arr;
  for (auto n : target) {
    if (n != c)
      d += n;
    else if (d != "")
      arr.push_back(d), d = "";
  }
  if (d != "") arr.push_back(d), d = "";
  return arr;
}
bool isPrime(long long int g) {
  if ((g % 2 == 0 && g > 2) || g == 1) return 0;
  for (long long int i = 3; i * i <= g; i += 2)
    if (g % i == 0) return 0;
  return 1;
}
