#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 3e4 + 100;
int n;
char s[N];
int son[N][2], tot, vis[N];
int q[N], ne[N], vis2[N], vis3[N];
void insert () {
int p = 0;
for (int i = 1; s[i]; i ++ ) {
int k = s[i] - '0';
if (!son[p][k]) son[p][k] = ++ tot;
p = son[p][k];
}
vis[p] = 1;
}
void build () {
int l = 1, r = 0;
for (int i = 0; i < 2; i ++ ) if (son[0][i]) q[ ++ r] = son[0][i];
while (l <= r) {
int p = q[l ++ ], v = ne[p];
for (int i = 0; i < 2; i ++ ) {
int u = son[p][i];
if (!u) son[p][i] = son[v][i];
else ne[u] = son[v][i], q[ ++ r] = u, vis[u] = vis[ne[u]];
}
}
}
bool dfs (int p) {
vis2[p] = 1; vis3[p] = 1;
int flag = 0;
for (int i = 0; i < 2; i ++ ) {
if (vis2[son[p][i]]) return 1;
if (!vis[son[p][i]] && !vis3[son[p][i]]) flag |= dfs(son[p][i]);
}
vis2[p] = 0;
return flag;
}
int main () {
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> s + 1, insert();
build ();
if (!(son[0][0] > 0 && son[0][1] > 0)) {cout << "TAK" << '\n'; return 0;}
if (dfs(0)) cout << "TAK" << '\n';
else cout << "NIE" << '\n';
return 0;
}
一直都是60分 hack1过不去