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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<iostream>

#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)

using namespace std;

const int MAX_N = 1000000;

int A[MAX_N+1], B[MAX_N+1];

int t, n, d, g, k;

int main(void) {	
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin >> t;
	REP(nTC, t) {
		cin >> n;
		REP(i, n) {
			cin >> A[i];
		}
		d = g = -1;
		REP(i,n) if (A[i]) {
			A[i]*=2;
			g=i;
			if (d < 0) d=i;
		}
		bool res = true;
		FOR(i,d,g) if (!A[i]) {
			res = false;
		}
		if (!res) {
			cout << "NIE" << endl;
			continue;
		}

		k = 2;			
		while (d < g) {
			if (A[d] < A[d+1]) {
				A[d+1] -= A[d];
				A[d] = 0;
				d++;
				continue;
			}
			if (A[g] < A[g-1]) {
				A[g-1] -= A[g];
				A[g] = 0;
				g--;
				continue;
			}
			if (A[d] == A[d+1] && k > 0) {
				k--;
				A[d]--;
				continue;
			}
			if (A[g] == A[g-1] && k > 0) {
				k--;
				A[g]--;
				continue;
			}
			break;
		}

		cout << ((d+1==g || (d==g && A[d] == k) ? "TAK" : "NIE")) << endl;
	}
	
	return 0;
}