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

public class cf1264_Div1_A {
		
	public static void main(String[] args) throws IOException {
		FastScanner in = new FastScanner();
		int tc = in.nextInt();
		for ( ; tc > 0; tc--) {
			int n = in.nextInt();
			int give = n / 2;
			int[] p = new int[n];
			for (int i = 0; i < n; i++) 
				p[i] = in.nextInt();
			int g = 0;
			int s = 0;
			int b = 0;
			
			// give gold
			while (g < give && p[g] == p[0]) g++;
			
			// give silver
			for (int i = g; i < give && s <= g; i++) s++;
			for (int i = s + g; i < give && p[i] == p[g + s - 1]; i++) s++;
			
			// give bronze
			b = give - g - s;
			// System.out.println(give);
			// System.out.println(g + " " + s + " " + b);
			if (g <= 0 || s <= 0 || b <= 0 || s <= g || b <= g) System.out.println(0 + " " + 0 + " " + 0);
			else {
				while (b > 0 && p[give] == p[give - 1]) {b--; give--;}
				if (b <= g || b <= 0) System.out.println(0 + " " + 0 + " " + 0);
				else System.out.println(g + " " + s + " " + b);
			}
		}
	}  
	
    public static void shuffle(int[] arr) {
    	Random rgen = new Random();
    	
    	for (int i = 0; i < arr.length; i++) {
    		int rPos = rgen.nextInt(arr.length);
    		int temp = arr[i];
    		arr[i] = arr[rPos];
    		arr[rPos]=temp;
    	}
    }

    public static class FastScanner {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner(String s) {
            try {
                br = new BufferedReader(new FileReader(s));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        public FastScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String nextToken() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
        
        String next() {
    		while (st == null || !st.hasMoreElements()) {
    			try {
    				st = new StringTokenizer(br.readLine());
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		return st.nextToken();
    	}

        String nextLine() {
            st = null;
            try {
                return br.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        int nextInt() {
            return Integer.parseInt(nextToken());
        }

        long nextLong() {
            return Long.parseLong(nextToken());
        }

        double nextDouble() {
            return Double.parseDouble(nextToken());
        }
    }
}

