import java.io.*;
import java.util.*;

public class A{
	static int n;
	static int[] a;
	static String res() {
		String std = "0 0 0";
		int g=1,s=1,b=0;
		ArrayDeque<Integer> cur =  new ArrayDeque<Integer>();
		for  (int  x:  a)  cur.add(x);
		int v= cur.poll();
		while(!cur.isEmpty()&& v==cur.peek()) {
			cur.poll();
			g++;
		}
		int max = n/2;
		if (g > max) return std;
		v = cur.poll();
		while(!cur.isEmpty() && (v==cur.peek()||s<=g)) {
			v= cur.poll();
			s++;
		}
		if (g+s>max) return std;
		Stack<Integer> p = new Stack<Integer>();
		while (!cur.isEmpty() && g+s+b<max) {
			p.add(cur.poll());
			b++;
		}
		if (b == 0) return std;
		while(!p.isEmpty()  &&  cur.peek() == p.peek()) {
			p.pop();
			b--;
		}
		
		if(b==0)  return std;
		return g + " " + s + " " + b;
	}
	public static void main(String[] args) throws IOException {
		// br = new BufferedReader(new FileReader(".in"));
		// out = new PrintWriter(new FileWriter(".out"));
		//new Thread(null, new (), "peepee", 1<<28).start();
		int t =readInt();
		while(t-->0) {
			n =readInt();
			a = new int[n];
			for (int i = 0; i < n; i+=1) a[i]=readInt();
			out.println(res());
		}
		out.close();
	}
	
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
	static StringTokenizer st = new StringTokenizer("");
	static String read() throws IOException{return st.hasMoreTokens() ? st.nextToken():(st = new StringTokenizer(br.readLine())).nextToken();}
	static int readInt() throws IOException{return Integer.parseInt(read());}
	static long readLong() throws IOException{return Long.parseLong(read());}
	static double readDouble() throws IOException{return Double.parseDouble(read());}
	
}