/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

/**
 *
 * @author ahmed.adel
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  {
       Scanner input = new Scanner(System.in);
       
      
       int testCases = input.nextInt();
      
       
       for(int x = 1 ; x<=testCases ; x++){
           int g =0 , s =0, b = 0;
        int len = input.nextInt();
        int[] problemsSolvingArr = new int[len];
        for(int n =0 ; n < len ; n++){
            problemsSolvingArr[n] = input.nextInt();
        }
        
        if(len < 10){
            System.out.println(g+" "+s+" "+b);
        }else{
            int halfOfArr = len / 2;
            if(problemsSolvingArr[halfOfArr-1] == problemsSolvingArr[halfOfArr]){
               
              boolean flagHalf = true;
              halfOfArr --;
              while(flagHalf){
                  
              if((problemsSolvingArr[halfOfArr-1] ==  problemsSolvingArr[halfOfArr]) && halfOfArr != 1){
                 
               halfOfArr --;
              
              }else{
              flagHalf = false;
              }
              }
            }
            if(halfOfArr >= 5){
            boolean breaker = true;
            g = 1;
            int index = 1;
           while(breaker){
             
             if((problemsSolvingArr[index] == problemsSolvingArr[index-1]) && index < halfOfArr){
               g ++;
               index ++;
             } else {
               breaker = false;
             }
           }
           int remainder = halfOfArr - index;
           if((remainder) < ((g*g)+2)){
               System.out.println("0 0 0");
           }else{
               int start = index ,  end = halfOfArr-1;
             while(remainder != 0){
                 s ++;
                 index ++;
                 boolean breakerS = true;
               while(breakerS){
                 if(problemsSolvingArr[index] == problemsSolvingArr[index-1]&& index < end){
                 s++;
                 remainder --;
                 index++;
                 }else{
                   breakerS = false;
                 }
               }
               if((end - index) == 0){
                   s++;
                 if(s!=0 && s>g && b != 0 && b > g){
                     System.out.println(g+" "+s+" "+b);
                     remainder =0;
                 }else{
                 System.out.println("0 0 0");
                 remainder = 0;
                 }
               }else{
                   b++;
                   end --;
                   boolean breakerB = true;
                   while(breakerB){
                   if(problemsSolvingArr[end] == problemsSolvingArr[end+1]&& end > index){
                   b++;
                   remainder--;
                   end--;
                   }else{
                    breakerB = false;
                   }
                   }
                  
                   if((end - index) == 0){
                       b++;
                     if(s!=0 && s>g && b != 0 && b > g){
                     System.out.println(g+" "+s+" "+b);
                     remainder =0;
                 }else{
                 System.out.println("0 0 0");
                 remainder = 0;
                 }
                   }
                    
               
               }
             }
               
           }
           
        }else{
                System.out.println("0 0 0"); 
                }
           
        }
        
        }
      }
      
   
    
}
