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<bits/stdc++.h>
#include<stdio.h>

using namespace std;

int n;
char c, olo[256];
long long hasz, hasz2, zsah, zsah2;
long long powlee[2] = {1, 1};
const long long p[2] = {29, 31};
long long mod = 1000696969;
int main()
{
    fgets(olo, 255, stdin);
    while( ( c = getchar_unlocked() ) != EOF )
    {
        if(c == '\n') continue;
        n++;
        hasz*=p[n%2];
        hasz+=c-'a'+1;
        hasz2*=p[(n+1)%2];
        hasz2+=c-'a'+1;
        if(hasz >= mod)hasz%=mod;
        if(hasz2 >= mod)hasz2%=mod;
        zsah += powlee[n%2]*(c-'a'+1);
        zsah2 += powlee[(n+1)%2]*(c-'a'+1);
        powlee[n%2]*=29;
        powlee[(n+1)%2]*=31;
        if(powlee[0] >= mod) powlee[0]%=mod;
        if(powlee[1] >= mod) powlee[1]%=mod;
        if(zsah >= mod)zsah%=mod;
        if(zsah2 >= mod)zsah2%=mod;
    }
    while(hasz < 0)hasz+=mod;
    while(hasz2 < 0)hasz+=mod;
    while(zsah < 0)hasz+=mod;
    while(zsah2 < 0)hasz+=mod;
    if((n%2==1 && hasz == zsah && hasz2 == zsah2)||(n%2==0 && hasz == zsah2 && hasz2 == zsah))
    {
        cout << "TAK";
    }
    else
    {
        cout << "NIE";
    }
}