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

public class A{
	static int n;
	static int[] a;
	static String res() {
		String std = "0 0 0";
		TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>(Collections.reverseOrder());
		for (int x: a) {
			if (!tm.containsKey(x))  tm.put(x, 0);
			tm.put(x, tm.get(x)+1);
		}
		int g  = 0, s = 0, b = 0;
		g=tm.pollFirstEntry().getValue();
		while (s <= g && !tm.isEmpty()) s+=tm.pollFirstEntry().getValue();
		int max = n/2;
		if (g+s>max || s<=g)return std;
		while (!tm.isEmpty() && b+s+g<max) {
			int next = tm.pollFirstEntry().getValue();
			if (next+b+g+s>max) break;
			b+=next;
		}
		if (b<=g || b+s+g>max) 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());}
	
}