1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <bits/stdc++.h>
using namespace std;
#define ll long long

bool sprawdz(vector<ll> vec){
    ll sm=0;
    for (auto x : vec)sm+=x;
    while(sm){
        ll cur=vec.back();
        vec.pop_back();
        if ((!cur && sm) || (sm==cur && sm>1))return false;
        sm-=cur;
        if (cur>vec.back()){
            if (sm==vec.back() && sm==cur-1)return true;
            else return false;
        }
        vec.back()-=cur-1;
        sm-=cur-1;
    }
    return true;
}

void solve(){
    ll n,sm=0;
    cin >> n;
    vector<ll> wej(n);
    for (ll i = 0; i<n; i++){
        cin >> wej[i];
        sm+=wej[i];
    }
    while(wej.size() && !wej.back()){
        wej.pop_back();
        n--;
    }
    if (sprawdz(wej)){
        cout << "TAK\n";
        return;
    }
    if (n>1 && wej[n-2]){
        wej[n-2]--;
        if (sprawdz(wej)){
            cout << "TAK\n";
            return;
        }
    }
    cout << "NIE\n";
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    ll t;
    cin >> t;
    while(t--)solve();
}