void insert() { int p = 0; for (int i = 0; str[i]; i++) { int t = str[i] - '0'; if (!tr[p][t]) tr[p][t] = ++idx; p = tr[p][t]; } cnt[p] = 1; }
void build() { if (tr[0][0]) q.push(tr[0][0]); if (tr[0][1]) q.push(tr[0][1]); while (!q.empty()) { int t = q.front(); q.pop(); for (int i = 0; i < 2; i++) { int p = tr[t][i]; if (!p) tr[t][i] = tr[net[t]][i]; else { net[p] = tr[net[t]][i]; q.push(p); } } } }
void dfs(int j) { for (int i = 0; i < 2; i++) { bool flag = false; int t = tr[j][i]; if (vis[t]) { printf("TAK"); exit(0); } while (t) { if (cnt[t]) flag = true; t = net[t]; } if (!flag) { vis[tr[j][i]] = true; dfs(tr[j][i]); vis[tr[j][i]] = false; } } }
int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%s", &str); insert(); } build(); dfs(0); printf("NIE"); return 0; }