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
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <bits/stdc++.h>

using namespace std;
#define INF 1010000000
#define EPS 1E-6
#define MP make_pair
#define ST first
#define ND second
#define REP(i, n) for(int i = 0; i < (n); ++i)
#define REPD(i, n) for(int i = (n) - 1; i >= 0; --i)
#define FOR(i, a, n) for(int i = (a); i <= (n); ++i)
#define FORD(i, a, n) for(int i = (a); i >= (n); --i)
#define DD(x, args...) { vector<string> _v = _split(#args, ','); _err(x, _v.begin(), args); }
#define D(args...) DD(", ", args)
#define DE(args...) DD("\n", args)
#define D2(a, args...) { cerr << a << ": "; D(args); }
#define DD2(x, a, args...) { cerr << a << ": "; DD(x, args); }
#define E cerr << endl;
#define OUT(...) ostream &operator<<(ostream &ost, const __VA_ARGS__ &_cnt) { return _out(ost, ALL(_cnt)); }
#define SZ(x) ((int)(x).size())
#define PB push_back
#define EB emplace_back
#define ALL(x) x.begin(), x.end()
#define endl '\n'

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;

template<class c1> ostream &_out(ostream &ost, c1 a, c1 b);

template<class T1, class T2> ostream &operator<<(ostream &ost, const pair<T1, T2> &_cnt);

template<class T1> OUT(vector<T1>);
template<class T1> OUT(deque<T1>);
template<class T1> OUT(list<T1>);
template<class T1, class T2> OUT(set<T1, T2>);
template<class T1, class T2> OUT(multiset<T1, T2>);
template<class T1, class T2, class T3> OUT(map<T1, T2, T3>);
template<class T1, class T2, class T3> OUT(multimap<T1, T2, T3>);
template<class T1, size_t T2> OUT(array<T1, T2>);

template<class T1, class T2>
ostream &operator<<(ostream &ost, const pair<T1, T2> &_cnt)
    { return ost << '(' << _cnt.ST << ", " << _cnt.ND << ')'; }

template<class T1>
ostream &_out(ostream &ost, T1 a, T1 b)
    { ost << '{'; if(a != b) { ost << *a; while(++a != b) ost << ", " << *a; } return ost << '}'; }

vector<string> _split(const string &s, char c) {
    int br = 0;
    vector<string> v(1);
    REP(i, SZ(s)) {
        if(s[i] == '[' || s[i] == '(' || s[i] == '{'/* || s[i] == '<'*/) br++;
        else if(s[i] == ']' || s[i] == ')' || s[i] == '}'/* || s[i] == '>'*/) br--;
        if(s[i] == c && br == 0) v.PB("");
        else v.back().PB(s[i]);
  }
  return v;
}

template<class T1>
void _err(string del, vector<string>::iterator it, T1 a) {
    bool wb = (*it)[0] == ' ', we = (*it).back() == ' ';
    cerr << it -> substr(wb, SZ(*it) - wb - we) << " = " << a << endl;
    (void)del;
}
template<class T1, class... Args>
void _err(string del, vector<string>::iterator it, T1 a, Args... args) {
    bool wb = (*it)[0] == ' ', we = (*it).back() == ' ';
    cerr << it -> substr(wb, SZ(*it) - wb - we) << " = " << a << del;
    _err(del, ++it, args...);
}

/////////////////////////////////////////////////////////////////////

bool prime(const string &a) {
    if(a[0] == '0' || a == "1")
        return false;
    
    LL n = stoll(a);
    
    for(int i = 2; (LL)i * i <= n; i++)
        if(n % i == 0)
            return false;
    
    return true;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    string num;
    cin >> num;
    
    int n = SZ(num);
    
    string a = "", b = num;
    FOR(i, 1, n - 1) {
        a.PB(b[0]);
        b.erase(b.begin());
        
        if(prime(a) && prime(b)) {
            cout << "TAK" << endl;
            return 0;
        }
    }
    cout << "NIE" << endl;
    
    return 0;
}
/*
*/