/*
If you want to aim high, aim high
Don't let that studying and grades consume you
Just live life young
******************************
If I'm the sun, you're the moon
Because when I go up, you go down
*******************************
*/
import java.util.*;
import java.io.*;

   public class C
   {
      public static void main(String args[]) throws Exception
      {
         //BufferedReader infile = new BufferedReader(new FileReader("cowdate.in"));
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));  
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int Q = Integer.parseInt(st.nextToken());
         StringBuilder sb = new StringBuilder();
         for(int qw=0; qw < Q; qw++)
         {
            int N = Integer.parseInt(infile.readLine());
            int[] arr = readArr(N, infile, st);
            if(N <= 3)
            {
               sb.append("0 0 0\n");
               continue;
            }
            //solve
            ArrayList<Integer> ls = new ArrayList<Integer>();
            int boof = 0;
            for(int i=0; i < N/2; i++)
            {
               if(i == 0 || arr[i-1] == arr[i])
                  boof++;
               else
               {
                  ls.add(boof);
                  boof = 1;
               }
            }
            if(arr[N/2] != arr[N/2-1])
               ls.add(boof);
            if(ls.size() < 3 || !works(1, ls))
            {
               sb.append("0 0 0\n");
               continue;
            }
            int low = 1;
            int high = ls.size()-2;
            while(low != high)
            {
               int mid = (low+high+1)/2; //how many gold groups to assign
               if(works(mid, ls))
                  low = mid;
               else
                  high = mid-1;
            }
            //generate answer
            int sum1 = 0;
            for(int i=0; i < low; i++)
               sum1 += ls.get(i);
            int silvers = low;
            int bronze = -1;
            int sum2 = 0;
            for(int i=silvers; i < ls.size(); i++)
            {
               sum2 += ls.get(i);
               if(sum2 > sum1)
               {
                  bronze = i+1;
                  break;
               }
            }
            int sum3 = 0;
            for(int i=bronze; i < ls.size(); i++)
               sum3 += ls.get(i);
            sb.append(sum1+" "+sum2+" "+sum3);
            sb.append("\n");
         }
         System.out.print(sb);
      }
      public static boolean works(int golds, ArrayList<Integer> ls)
      {
         int sum1 = 0;
         for(int i=0; i < golds; i++)
            sum1 += ls.get(i);
         int silvers = golds;
         int bronze = -1;
         int sum2 = 0;
         for(int i=silvers; i < ls.size(); i++)
         {
            sum2 += ls.get(i);
            if(sum2 > sum1)
            {
               bronze = i+1;
               break;
            }
         }
         if(bronze == -1 || bronze == ls.size() || sum2 <= sum1)
            return false;
         sum2 = 0;
         for(int i=bronze; i < ls.size(); i++)
            sum2 += ls.get(i);
         if(sum2 <= sum1)
            return false;
         return true;
      }
      public static int[] readArr(int N, BufferedReader infile, StringTokenizer st) throws Exception
      {
         int[] arr = new int[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Integer.parseInt(st.nextToken());
         return arr;
      }
   }