#include <bits/stdc++.h>
using namespace std;
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
inline int addmod(int x, int y) {
  return (x % 1000000007 + y % 1000000007) % 1000000007;
}
inline int submod(int x, int y) {
  return (x % 1000000007 - y % 1000000007 + 1000000007) % 1000000007;
}
inline int mulmod(int x, int y) {
  return (x % 1000000007 * 1LL * y % 1000000007) % 1000000007;
}
inline int nextSubMask(int i, int mask) { return (i - 1) & mask; }
template <typename T>
void we_r_done(T mssg) {
  cout << mssg;
  exit(0);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    int a[n + 1];
    a[0] = 1e9;
    for (int i = 1; i <= n; i++) {
      cin >> a[i];
      if (a[i - 1] < a[i])
        while (true)
          ;
    }
    if (n <= 7) {
      cout << "0 0 0\n";
      continue;
    }
    int last = n / 2;
    while (last > 0 && a[last] == a[last + 1]) last--;
    set<int> bal;
    for (int i = 1; i <= last; i++) {
      bal.insert(a[i]);
      if (bal.size() >= 3) break;
    }
    if (bal.size() < 3) {
      cout << "0 0 0\n";
      continue;
    }
    int g = 0, s = 0, b = 0;
    int i = 1;
    while (a[1] == a[i] && i < last) {
      g++;
      i++;
    }
    int gg = g, sum = 0;
    for (int j = i; i < last; i++) {
      if (a[i] > a[i + 1]) {
        int nb = last - i, ns = i - j + 1;
        int now = g + ns + nb;
        if (now > sum && g < min(nb, ns)) {
          sum = now;
          b = nb;
          s = ns;
        }
      }
    }
    if (!g || !b || !s) {
      g = b = s = 0;
    }
    cout << g << " " << s << " " << b << endl;
  }
  return 0;
}
