import java.io.*;
import java.util.*;
public final class code
// class code
// public class Solution
{
	static boolean solve()throws IOException
	{
		int n=nextInt();
		int a[]=new int[n+1];
		for(int i=1;i<=n;i++)
			a[i]=nextInt();
		int g=0,s=0,b=0;
		int trail=1;
		int i;
		for(i=1;i<=n;i++)
		{
			if(i!=n && a[i]==a[i+1])
				trail++;
			else
			{
				if(i<=n/2)
				{
					g=trail;
					trail=1;
					break;
				}
				else
					return false;
			}
		}	
		// debug(g);
		for(i=i+1;i<=n;i++)
		{
			if(i!=n && a[i]==a[i+1])
				trail++;
			else
			{
				if(i<=n/2)
				{
					s+=trail;
					trail=1;
					if(s>g)
						break;
				}
				else
					return false;
			}
		}
		// debug(s);
		for(i=i+1;i<=n;i++)
		{
			if(i!=n && a[i]==a[i+1])
				trail++;
			else
			{
				if(i<=n/2)
				{
					b+=trail;
					trail=1;
				}
				else
					break;
			}
		}
		// debug(b);
		out.println(g+" "+s+" "+b);
		return true;
	}

	///////////////////////////////////////////////////////////
	static final long mod=(long)(1e9+7);
	static final int inf=(int)(1e9+1);
	// static final long inf=(long)(1e18);
	static class Pair implements Comparable<Pair>
	{
		int first,second;
		Pair(int a,int b)
		{
			first=a;
			second=b;
		}
		public int compareTo(Pair p)
		{
			if(this.second==p.second)
				return this.first-p.first;
			return this.second-p.second;
		}
		public boolean equals(Object p)
		{
			Pair p1=(Pair)p;
			return (first==p1.first && second==p1.second);
		}
		public String toString()
		{
			return this.first+" "+this.second;
		}
		public int hashCode()
		{
			return (int)((1l*(inf+1)*this.first+this.second)%mod);
		}
	}
	public static void main(String args[])throws IOException
	{
		br=new BufferedReader(new InputStreamReader(System.in));
		out=new PrintWriter(new BufferedOutputStream(System.out));
		random=new Random();
		// solve();
 
		int t=nextInt();
		for(int i=1;i<=t;i++)
		{
			// out.print("Case #"+i+": ");
			if(solve()==false)
				out.println("0 0 0");
		}
 
		out.close();
	}
	static void debug(Object ... a)
	{
		System.out.print("> ");
		for(int i=0;i<a.length;i++)
			System.out.print(a[i]+" ");
		System.out.println();
	}
	static void debug(int a[]){debuga(Arrays.stream(a).boxed().toArray());}
	static void debug(long a[]){debuga(Arrays.stream(a).boxed().toArray());}
	static void debuga(Object a[])
	{
		System.out.print("> ");
		for(int i=0;i<a.length;i++)
			System.out.print(a[i]+" ");
		System.out.println();
	}
 
	
	static Random random;
	static BufferedReader br;
	static StringTokenizer st;
	static PrintWriter out;
	static String nextToken()throws IOException
	{
		while(st==null || !st.hasMoreTokens())
			st=new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	static String nextLine()throws IOException
	{
		return br.readLine();
	}
	static int nextInt()throws IOException
	{
		return Integer.parseInt(nextToken());
	}
	static long nextLong()throws IOException
	{
		return Long.parseLong(nextToken());
	}
	static double nextDouble()throws IOException
	{
		return Double.parseDouble(nextToken());
	}
	
}