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
#include<cstdio>
#include<algorithm>
using namespace std;

int n;
const int prime7 = 1000000007;
const int prime9 = 1000000009;
long long hash_przod_7 = 0;
long long hash_tyl_7 = 0;
long long hash_tyl_9 = 0;
long long hash_przod_9 = 0;

int main(){
	scanf("%d\n", &n);
	long long pot7 = 1;
	long long pot9 = 1;
	int x = getchar();
	while(x >= 'a' and x <= 'z'){
//		printf("%lld %lld %lld %lld\n", hash_przod_7, hash_tyl_7, hash_przod_9, hash_tyl_9);
		hash_przod_7 *= 26LL;
		hash_przod_7 %= prime7;
		hash_przod_7 += (x - 'a');
		hash_przod_7 %= prime7;
		hash_przod_9 *= 26LL;
		hash_przod_9 %= prime9;
		hash_przod_9 += (x - 'a');
		hash_przod_9 %= prime9;
		long long x7 = pot7 * (long long)(x - 'a');
		long long x9 = pot9 * (long long)(x - 'a');
		x7 %= prime7;
		x9 %= prime9;
		hash_tyl_7 += x7;
		hash_tyl_7 %= prime7;
		hash_tyl_9 += x9;
		hash_tyl_9 %= prime9;
		pot7 *= 26LL;
		pot9 *= 26LL;
		pot7 %= prime7;
		pot9 %= prime9;
		x = getchar();
	}
//	printf("%lld %lld %lld %lld\n", hash_przod_7, hash_tyl_7, hash_przod_9, hash_tyl_9);
	if(hash_przod_7 == hash_tyl_7 and hash_przod_9 == hash_tyl_9) printf("TAK");
	else printf("NIE");
	return 0;
}