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

public class BeautifulRegionalContest {
	public static void main(String[] args) throws IOException {
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		int t = Integer.parseInt(input.readLine());
		
		while (t-- > 0) {
			int gold = 0, silver = 0, bronze = 0;
			int n = Integer.parseInt(input.readLine());
			
			List<Solve> arr = new ArrayList<Solve>();
			StringTokenizer st = new StringTokenizer(input.readLine());
			Solve temp = null;
			for (int i = 0; i < n; i++) {
				int targetPerson = Integer.parseInt(st.nextToken());
				try {
					if (temp.problemNum == targetPerson) {
						temp.plus();
					} else {
						arr.add(temp);
						temp = new Solve(targetPerson, 1);
					}
				} catch (NullPointerException e) {
					temp = new Solve(targetPerson, 1);
				}
			}
			arr.add(temp);
			
			for (int i = 1; i < arr.size(); i++) {
				arr.get(i).plus(arr.get(i - 1).peopleNum);
			}
			
			for (Solve s : arr) {
				if (gold == 0) {
					gold = s.peopleNum;
				} else if (silver == 0) {
					if (s.peopleNum > 2 * gold) silver = s.peopleNum - gold;
				} else {
					if (s.peopleNum <= n / 2) bronze = s.peopleNum - gold - silver;
				}
			}
			
			if (gold == 0 || silver == 0 || bronze == 0 || gold >= silver || gold >= bronze ||
					gold + silver + bronze > n / 2) {
				gold = 0;
				silver = 0;
				bronze = 0;
			}
			
			System.out.println(gold + " " + silver + " " + bronze);
		}
	}
}

class Solve {
	int problemNum;
	int peopleNum;
	
	Solve (int problemNum, int peopleNum) {
		this.problemNum = problemNum;
		this.peopleNum = peopleNum;
	}
	
	void plus() {
		this.peopleNum++;
	}
	
	void plus(int n) {
		this.peopleNum += n;
	}
}