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
71
72
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(){
	int n;
	char c;
	cin >> n;
	if(n > 0){
		if(n < 500000){
			string s;
			cin >> s;
			bool isPalindrome=true;
			for(int i=0; i < s.size()/2; ++i){
				if(s[i]!=s[s.size()-i-1]){
					isPalindrome=false;
					break;
				}
			}
			if(isPalindrome){
				cout << "TAK\n";
			}else{
				cout << "NIE\n";
			}
		}else{
			int npol=n/2;
			long long int palindrom=0;
			c = cin.get();
			while( ((int)c) < 97 || ((int)c) > 122){
				c = cin.get();
			}
			for(int i=1; i<=npol; ++i){
				//cout << c;
				palindrom+=(int)c*(i+3);
				c = cin.get();
			}
			if(n%2==1){
				//cout << c;
				c = cin.get();
			}
			for(int i=npol; i>0; --i){
				//cout << c;
				palindrom-=(int)c*(i+3);
				if(i>1) c = cin.get();
			}
			if(palindrom==0){
				cout << "TAK\n";
			}else{
				cout << "NIE\n";
			}
		}
	}else{
		string s;
		cin >> s;
		bool isPalindrome=true;
		for(int i=0; i < s.size()/2; ++i){
			if(s[i]!=s[s.size()-i-1]){
				isPalindrome=false;
				break;
			}
		}
		if(isPalindrome){
			cout << "TAK\n";
		}else{
			cout << "NIE\n";
		}
	}
	return 0;
}