/* Rajkin Hossain */

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

import static java.lang.Math.*;

public class C {
   
    FastInput k = new FastInput(System.in);
    //FastInput k = new FastInput("/home/rajkin/Desktop/input.txt");
    FastOutput z = new FastOutput();
    
    int n;
    ArrayList<Integer> p;
    
    void startAlgo() {
    	long result = 0;
    	ArrayDeque<Integer> q = new ArrayDeque<Integer>();
    	for(int i = 0; i<p.size(); i++) {
    		result += p.get(i);
    		if(result > n/2) {
    			result -= p.get(i);
    			break;
    		}
    		
    		q.add(p.get(i));
    	}
    	
    	if(q.isEmpty()) {
    		z.println("0 0 0");
    		
    		return;
    	}
    	
		long first = q.pollFirst();
		
		long sum = 0;
		while(!q.isEmpty()) {
			sum += q.pollFirst();
			if(sum > first) {
				break;
			}
		}
		
		if(first > 0 && sum > 0 && (result-(first+sum) > 0)) {
			z.println(first+" "+sum+" "+(result-(first+sum)));
		}
		else {
    		z.println("0 0 0");
    	}
    }
    
	void startProgram() {
		
		int t = k.nextInt();
		
		while(t-->0) {
			n = k.nextInt();
			p = new ArrayList<Integer>();
			
			int pv = k.nextInt();
			int count = 1;
			
			for(int i = 1; i<n; i++) {
				int v = k.nextInt();
				if(v == pv) {
					count++;
				}
				else {
					p.add(count);
					pv = v;
					count = 1;
				}
			}
			
			p.add(count);
			
			startAlgo();
		}
    	
    	z.flush();
    	System.exit(0);
    }
    
    public static void main(String [] args) throws IOException {
        new Thread(null, new Runnable(){
            public void run(){
            	try{ 
            		new C().startProgram();
            	}
            	catch(Exception e){
            		e.printStackTrace();
            	}
            }
        },"Main",1<<28).start();
    }
    

    /* MARK: FastInput and FastOutput */
 
    class FastInput {
        BufferedReader reader;
        StringTokenizer tokenizer;
 
        FastInput(InputStream stream){
            reader = new BufferedReader(new InputStreamReader(stream));
        }
       
        FastInput(String path){
            try {
                reader = new BufferedReader(new FileReader(path));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            tokenizer = null;
        }
 
        String next() {
            return nextToken();
        }
       
        String nextLine() {
            try {
                return reader.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
            return null;
        }
 
        boolean hasNext(){
            try {
                return reader.ready();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return false;
        }
 
        String nextToken() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                String line = null;
                try {
                    line = reader.readLine();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
                if (line == null) {
                    return null;
                }
                tokenizer = new StringTokenizer(line);
            }
            return tokenizer.nextToken();
        }
 
        int nextInt() {
            return Integer.parseInt(nextToken());
        }
       
        long nextLong() {
            return Long.valueOf(nextToken());
        }
        
        double nextDouble() {
            return Double.valueOf(nextToken());
        }
    }
 
    class FastOutput extends PrintWriter {
		FastOutput() {
			super(new BufferedOutputStream(System.out)); 
		}
		
		public void debug(Object...obj) {
		    System.err.println(Arrays.deepToString(obj));
		}
    }
}
