//  package cp;
import java.util.*;
import java.io.*;
import java.math.*;
public class Cp_3 {
	BigInteger bi1=new BigInteger("2");//initialize as string
//	1.BigInteger bi=new BigInteger(Readers.next());- take input as biginteger
	StringBuilder sb=new StringBuilder();
//	2.StringBuilder temp=new StringBuilder(str[i-1]);
//	3.String rev=temp.reverse().toString(); convert sb to string
//	4.if(str[i].compareTo(rev)>=0)minn=0;-compare two Strings
//  5.(Initialize as string) - (a.add(b)) - (array initialized with null and not 0)
	Integer[] ARRE=new Integer[5];//Integer sort-TLE-Initialize object elements i.e a[0].
	static final int mod1 = 1000000007;//or 1e9+7
//	6.System.exit(0); to exit from code....esp in recur 
	long gcd(long a,long b) {if(b==0)return a;else return gcd(b,a%b);}
	long ceil(double d) {return (long)Math.ceil(1.0*d);}
	int ch_int(char c) {return Integer.parseInt(String.valueOf(c));}//change char to Integer
	String ch_str(char c) {return String.valueOf(c);}
	String int_str(int num) {return Integer.toString(num);}
	void divisor(long n,int start) {
		int cnt=0;for(int i=start;i<=Math.sqrt(n);i++) {
		if(n%i==0) {if(i==n/i)cnt++;else cnt+=2;}}}	
	
	public static void main(String[] args) throws IOException {
		PrintWriter out = new PrintWriter(System.out);
		Readers.init(System.in);
		Cp_3 obj=new Cp_3();
		int t=Readers.nextInt();
		while(t-->0) {
			int n=Readers.nextInt();
			int[] a=new int[n];
			for (int i = 0; i < a.length; i++) {
				a[i]=Readers.nextInt();
			}
			int g=1,s=1,b=1;
			int flag=0;
			int indx=1;
			while(indx<n && a[indx]==a[indx-1]) {
				g++;
				indx++;
			}
			indx++;
			while(indx<n && (a[indx]==a[indx-1] || s<=g)) {
				s++;
				indx++;
			}
			indx++;
			
//			while(indx<n && (a[indx]==a[indx-1] || b<=g)) {
			int start=0;
			while(indx<n) {
				if(a[indx]==a[indx-1]) {
					b++;
				}
				else{
					
					if(s+b+g<n/2)start=indx;
//					if(s+b+g<=n/2 && a[indx]==a[start]) {
//						b--;
//					}
					if(s+b+g<n/2) {
						b++;
					}
					else {
						break;
					}
				}
//				b++;
				indx++;
			}
			if(s+b+g>n/2) {
				b=b-(indx-start);
			}
			
//			System.out.println(g+" ok "+s+" "+b);
			if(s+b+g<=n/2 && g<b) {
				System.out.println(g+" "+s+" "+b);
			}
			else {
				System.out.println(0+" "+0+" "+0);
			}
//			if(s+b+)
			
//			for (int i = 1; i < a.length; i++) {
//				if(a[i]==a[i-1] && flag==0) {
//					g++;
//					flag=1;
//				}
//				else if(flag==1 && s<=g && a[i]==a[i-1]){
//					s++;
//					flag=-1;
//				}
//				else if(flag==-1 && b<=g || a[i]==a[i-1]) {
//					b++;
//				}
//			}
			
//			System.out.println(s);
			
		}
		out.flush();
	}
 
}
class Readers {
	 
    static BufferedReader reader;
    static StringTokenizer tokenizer;
 
    /** call this method to initialize reader for InputStream */
    static void init(InputStream input) {
        reader = new BufferedReader(new InputStreamReader(input));
        tokenizer = new StringTokenizer("");
    }
    
    /** get next word */
    static String next() throws IOException {
        while ( ! tokenizer.hasMoreTokens() ) {
            //TODO add check for eof if necessary 
            tokenizer = new StringTokenizer(reader.readLine());
        }
        return tokenizer.nextToken();
    }

    static int nextInt() throws IOException {
        return Integer.parseInt( next() );
    }
 
    static double nextDouble() throws IOException {
        return Double.parseDouble( next() );
    }
    
    static long nextLong() throws IOException{
		return Long.parseLong(next());
	}
 
}