Problem: Let's call a string "s-palindrome" if it is symmetric about the middle of the string. For example, the string "oHo" is "s-palindrome", but the string "aa" is not. The string "aa" is not "s-palindrome", because the second half of it is not a mirror reflection of the first half.

<image> English alphabet

You are given a string s. Check if the string is "s-palindrome".

Input

The only line contains the string s (1 ≤ |s| ≤ 1000) which consists of only English letters.

Output

Print "TAK" if the string s is "s-palindrome" and "NIE" otherwise.

Examples

Input

oXoxoXo


Output

TAK


Input

bod


Output

TAK


Input

ER


Output

NIE

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  char sym[] = {'A', 'O', 'M', 'H', 'I', 'o', 'T', 'V',
                'W', 'U', 'X', 'Y', 'x', 'w', 'v'};
  map<char, char> mp;
  mp['b'] = 'd';
  mp['d'] = 'b';
  mp['p'] = 'q';
  mp['q'] = 'p';
  string s;
  cin >> s;
  int n = s.length();
  int a = n / 2 - 1, b;
  if (n & 1)
    b = n / 2 + 1;
  else
    b = n / 2;
  if (n & 1 && count(sym, sym + 16, s[n / 2]) == 0) {
    cout << "NIE";
    return 0;
  }
  for (int i = 0, j = n - 1; i <= a && j >= b; i++, j--) {
    if (s[i] == s[j] && count(sym, sym + 16, s[i]) == 1) {
      continue;
    }
    if (mp[s[i]] == s[j] && mp[s[j]] == s[i]) {
      continue;
    }
    cout << "NIE";
    return 0;
  }
  cout << "TAK";
}