import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class C_BeautifulRegionalContest {
    public static void main(String[] args) {
        FastReader reader = new FastReader();
        BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
        int t;
        try {
            t = reader.nextInt();
            for (int i = 0; i < t; i++) {
                int n = reader.nextInt();
                int p[] = new int[n];
                for (int j = 0; j < n; j++) {
                    p[j] = reader.nextInt();
                }
                int freq[] = new int[n];
                freq[0] = 1;
                for (int j = 1; j < n; j++) {
                    if (p[j] == p[j - 1]) {
                        freq[j] = freq[j - 1] + 1;
                    } else {
                        freq[j] = 1;
                    }
                }
                ArrayList<Integer> freqSize = new ArrayList<>();
                for (int j = 1; j <= n / 2; j++) {
                    if (freq[j] > freq[j - 1]) {
                        // Keep moving
                    } else {
                        freqSize.add(freq[j - 1]);
                    }
                }
                if (freqSize.size() < 3) {
                    log.write("0 0 0\n");
                    log.flush();
                    continue;
                }
                int goldMedals = freqSize.get(0);
                int silverMedals = 0, bronzeMedals = 0;
                int j;
                for (j = 1; j < freqSize.size(); ) {
                    while (silverMedals <= goldMedals && j < freqSize.size()) {
                        silverMedals += freqSize.get(j);
                        j++;
                    }
                    while (bronzeMedals <= goldMedals && j < freqSize.size()) {
                        bronzeMedals += freqSize.get(j);
                        j++;
                    }
                    break;
                }
                for (; j < freqSize.size(); j++) {
                    bronzeMedals += freqSize.get(j);
                }
                if (silverMedals == 0 || bronzeMedals == 0 || silverMedals <= goldMedals || bronzeMedals <= goldMedals) {
                    log.write("0 0 0\n");
                    log.flush();
                    continue;
                } else {
                    log.write(goldMedals + " " + silverMedals + " " + bronzeMedals + "\n");
                    log.flush();
                }
            }
            log.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static class FastReader {
    BufferedReader br;
    StringTokenizer st;

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

    public String next() {
        while (st == null || !st.hasMoreTokens()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    public int nextInt() {
        return Integer.parseInt(next());
    }

    public long nextLong() {
        return Long.parseLong(next());
    }

    public String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}
}
