#include<cstdio>
#include<cstring>
#include<algorithm>
const int N=250007,M=500007;
int read(){
int ans=0,f=1,c=getchar();
while(c<‘0‘||c>‘9‘){if(c==‘-‘) f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){ans=ans*10+(c-‘0‘); c=getchar();}
return ans*f;
}
int n,m,vis[N],sum;
int first[N],cnt;
struct node{int to,next;}e[2*M];
void ins(int a,int b){e[++cnt]=(node){b,first[a]}; first[a]=cnt;}
void insert(int a,int b){ins(a,b); ins(b,a);}
void dfs(int x){
vis[x]=1; sum++;
for(int i=first[x];i;i=e[i].next){
int now=e[i].to;
if(!vis[now]) dfs(now);
}
}
int main(){
int x,y;
n=read(); m=read();
for(int i=1;i<=m;i++) x=read(),y=read(),insert(x,y);
for(int i=1;i<=n;i++)if(!vis[i]){
sum=0; dfs(i);
if(sum<=1) return printf("NIE\n");
}printf("TAK\n");
return 0;
}