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
#include <iostream>
#include <cstdio>

using namespace std;

int k;
long long mod1, mod2, hash1_pocz, hash1_kon, hash2_pocz, hash2_kon, pot1, pot2, zn;
char znak;

int main ()
{
	mod1 = 136058642903501LL;
	mod2 = 471620492140439LL;
	pot1 = pot2 = 1;
	scanf("%d\n", &k);
	while (1)
	{
		if (scanf("%c", &znak) != 1) break;
		if (znak < 'a') break;
		if (znak > 'z') break;
		zn = (long long)(znak - 'a');
		hash1_pocz += pot1 * zn;
		pot1 *= 26;
		hash1_kon *= 26;
		hash1_kon += zn;
		hash2_pocz += pot2 * zn;
		pot2 *= 26;
		hash2_kon *= 26;
		hash2_kon += zn;
		hash1_pocz %= mod1;
		hash1_kon %= mod1;
		pot1 %= mod1;
		hash2_pocz %= mod2;
		hash2_kon %= mod2;
		pot2 %= mod2;
	}
	if (hash1_pocz == hash1_kon && hash2_pocz == hash2_kon) printf("TAK\n");
	else printf("NIE\n");
	return 0;
}