/*
TASK:SEQ
LANG:C
*/
#include <stdio.h>
int n;
long m;
unsigned long seq[100001];
int current[100001];
int found=0;
int br[11];

int one_left()
{
    long i;
    int br=0;
    for (i=1;i<=m;i++)
        if (current[i]==0 && br==0) br++;
        else if (current[i]==0 && br==1) return 0;
if (br==0) return 0;
if (br==1) return 1;
}    

void find_first(long i)
{
     if (found==0)
     { 
     unsigned long min=1000000001;
     long minele=-1,j;
     if (one_left()==1) return;
     for (j=i+1;j<=m;j++)
         if (seq[j]<min){ minele=j; min=seq[j];}
     if (minele==-1){ found=1; return;}
     current[minele]=1;
     find_first(minele);
     }
}

/*void print_first()
{
     long i;
     for (i=1;i<=m;i++)
         if (current[i]==1) printf("%lu",seq[i]);
}*/

void nullify()
{
     long i;
     for (i=0;i<=m;i++)
         current[i]=0;
}

int second_correct()
{
    long i,prev=0;
    for (i=1;i<=m;i++)
    {
        if (current[i]==1) continue;
        if (current[i]==0 && prev==0) prev=i;
        else if (current[i]==0 && seq[i]<seq[prev]) return 0;
        else if (current[i]==0 && seq[i]>=seq[prev]) prev=i;
        //printf ("%ld\n", prev);
        }
return 1;
}

void solution(int sol,int i)
{
     br[i]=sol;
}

void print_sol()
{
     int i;
     for (i=0;i<n;i++)
         printf("%d",br[i]);
}

int main()
{
    int i;
    long j;
    scanf("%d",&n);
    
    for (i=0;i<n;i++)
    {
        found=0;
        nullify();
        scanf ("%ld",&m);
        for (j=1;j<=m;j++)
            scanf ("%lu",&seq[j]);
        find_first(0);
        //print_first();
        if (second_correct()==1) solution(1,i);
        else solution(0,i);
    }
    print_sol();
return 0;
}
