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

#define ll long long

using namespace std;

ll MOD1 = 241177577;
ll MOD2 = 189001507;
ll MOD3 = 816101101;
ll pot1 = 37;
ll pot2 = 31;
ll pot3 = 47;

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	ll hasz1 = 0, hasz11 = 0, hasz22 = 0, hasz2 = 0, hasz3 = 0, hasz33 = 0;

	int N;
	cin >> N;

	char a;

	ll mult1 = 1, mult2 = 1, mult3 = 1;

	while(cin >> a)
	{
		hasz1 += (a - 'a' + 1) * mult1; // doprzodu
		hasz11 *= pot1;
		hasz11 += (a - 'a' + 1);
		mult1 *= pot1;
		mult1 %= MOD1;
		hasz1 %= MOD1;
		hasz11 %= MOD1;

		hasz2 += (a - 'a' + 1) * mult2; // doprzodu
		hasz22 *= pot2;
		hasz22 += (a - 'a' + 1);
		mult2 *= pot2;
		mult2 %= MOD2;
		hasz2 %= MOD2;
		hasz22 %= MOD2;

		hasz3 += (a - 'a' + 1) * mult3; // doprzodu
		hasz33 *= pot3;
		hasz33 += (a - 'a' + 1);
		mult3 *= pot3;
		mult3 %= MOD3;
		hasz3 %= MOD3;
		hasz33 %= MOD3;
	}

	if(hasz1 == hasz11 && hasz2 == hasz22 && hasz3 == hasz33)
	{
		cout << "TAK\n";
	}
	else cout << "NIE\n";


	return 0;
}