#include<bits/stdc++.h>
#define LL long long
#define ll long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg
using namespace std;
const int N = 30000 + 7;
const int M = 1e7 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1000000007;
int n, m;
char s[N];
struct Ac {
int ch[N][26], val[N], dp[N], f[N], tot, sz;
int vis[N];
Ac(int sz) {this->sz = sz;}
void init() {tot = 0;};
int newNode() {
tot++; f[tot] = 0; val[tot] = 0;
memset(ch[tot], 0, sizeof(ch[tot]));
return tot;
}
inline int idx(char c) {return c - '0';}
void addStr(char *s) {
int u = 0;
for(int i = 0; s[i]; i++) {
int c = idx(s[i]);
if(!ch[u][c]) ch[u][c] = newNode();
u = ch[u][c];
}
val[u] = 1;
}
void build() {
queue<int> que;
for(int c = 0; c < sz; c++) {
int v = ch[0][c];
if(!v) ch[0][c] = 0;
else f[v] = 0, que.push(v);
}
while(!que.empty()) {
int u = que.front(); que.pop();
val[u] |= val[f[u]];
for(int c = 0; c < sz; c++) {
int v = ch[u][c];
if(!v) ch[u][c] = ch[f[u]][c];
else f[v] = ch[f[u]][c], que.push(v);
}
}
}
bool dfs(int u) {
vis[u] = -1;
for(int c = 0; c < sz; c++) {
int v = ch[u][c];
if(val[v] || vis[v] == 1) continue;
if(vis[v] == -1 || dfs(v)) return true;
}
vis[u] = 1;
return false;
}
void solve() {
memset(vis, 0, sizeof(vis));
queue<int> que;
que.push(0);
printf("%s\n", dfs(0) ? "TAK" : "NIE");
}
} ac(2);
int main() {
ac.init();
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%s", s);
ac.addStr(s);
}
ac.build();
ac.solve();
return 0;
}
/*
2
abad
ba
-----
*/