#include <cstdio>
int z[1000005];
int main(){
    int n,t;
    bool debug = false;
    scanf(" %d",&t);
    while(t--){
        bool ciagly = true;
        int pocz = -1, kon = -1;
        scanf("%d",&n);
        for(int i=0; i<n; i++){
            scanf("%d",&z[i]);
            if( kon >= 0 && z[i] > 0 && z[i-1] == 0 )
                ciagly = false;
            if( pocz >= 0 && z[i]>0 )
                kon = i;
            if( pocz<0 && z[i]>0 ) {
                pocz = i;
                kon = i;
            }
        }
        //sprawdz czy wogole byly jakies wyliczanki, albo czy moze wskazano na jednš zabawke
        if(pocz == kon){
            if(pocz == -1)
                printf("NIE\n");
            else if (z[pocz] == 1)
                printf("TAK\n");
            else
                printf("NIE\n");

        //zobacz czy nie ma dwoch rozlacznych ciagow
        } else if(!ciagly){
            printf("NIE\n");

        //przypadek gdy wyliczane sa tylko dwie zabawki
        } else if(pocz == kon-1){
            if( (z[pocz] - z[kon] >= -1 ) && (z[pocz] - z[kon] <= 1 ) )
                printf("TAK\n");
            else
                printf("NIE\n");
        //przypadek gdy jest wyliczanych wiecej niz trzy
        } else {

            //jesli zabawki z brzegow maja wartosc wieksza to tak sie nie da
            if(( z[pocz] > z[pocz+1] ) || ( z[kon] > z[kon-1] )){
                printf("NIE\n");
                continue;
            }

            //jesli sa tylko 3 to moze sie zawijac do srodka (na srodku zaczyna i konczy)
            if(kon-pocz==2){
                if( (z[pocz+1]>z[pocz] )&&(z[pocz+1]>z[pocz+2]) ){
                    if ((z[pocz+1]  >= (z[pocz] + z[pocz+2]) - 1 )&&(z[pocz+1]  <= (z[pocz] + z[pocz+2]) + 1 )){
                        printf("TAK\n");
                        continue;
                    } else {
                        printf("NIE\n");
                        continue;
                    }
                }

            }
            /*
            //jesli jest ciag jedynek z lewej i prawej strony
            if(kon-pocz>=4){
                    //printf("test %d %d %d %d",z[pocz+1] , z[pocz+2] , z[pocz+4] , z[pocz+5]);
                bool zly = false;
                for(int i=pocz; i<=kon-3; i++)
                if(( z[i] + z[i+2] + z[i+3] == 3)&&(z[i+1]>1)){
                    printf("NIE\n");
                    zly = true;
                    break;
                }
                if(zly)
                    continue;

            }*/

            //tak samo sie nie da jesli wyliczanka zawija sie do srodka przy sasiednich dwoch a jest wiecej niz 3
            if(kon-pocz>=2){
                if(( z[pocz+1] > (z[pocz] + z[pocz+2]) ) || ( z[kon-1] > (z[kon] + z[kon-2]))){
                    printf("NIE\n");
                    continue;
                }
            }
           // bool razOdjete=false;
            if(debug) printf("p:%d k:%d ",pocz,kon);
            for(int i=pocz; i<kon; i++){

                //obadaj czyz to aby nie jest waskie gardlo (przynajmniej 4 pola do przodu)
                if(( kon-i >= 4 ) ){
    /*
                    //sprawdz czy nie zaczynac wyliczania od drugiego elementu od lewej
                    if( (i == pocz)  && (!razOdjete) && (z[i] < z[i+1])){
                        z[i+1]--;
                        i--;
                        razOdjete = true;
                        continue;
                    }
      */
                    if((z[i+1]==1)&&( z[i+1] < z[i+2] )&&( z[i+3] < z[i+2] )){

                        printf("NIE\n");
                        break;
                    }
                    //if(z[i]==1 && z[i+1] ==1 && i<kon-1)
                    //    continue;
                }

                //odejmij roznice ruchow z nastepnego pola od pola poprzedniego (ilosc odwiedzanych kierunkow)
                z[i+1] -= z[i];

                //przypadek brzegowy
                if( i == kon-1 ) {
                    if((z[i+1] == 0) || (z[i+1] == -1) || (z[i+1] == 1))
                        printf("TAK\n");
                    else
                        printf("NIE\n");
                    break;
                }
                //nie da sie isc wiecej razy w lewa strone niz w prawa
                if(z[i+1] < 0){
                    printf("NIE\n");
                    break;
                }
            }
        }
    }
    return 0;
}
