/* Rozwiazanie wzorcowe do zadania JAZ (Jazda w kolko)
 * Autor: Jakub Radoszewski
 * Data: 27.02.2009
 * Opis: W kazdej spojnej skladowej osobno zlicza wierzcholki i krawedzie.
 */

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

#define MAX_N 200000

int n, m;
vector<int> t[MAX_N];
bool c[MAX_N];

int lkraw, lwierz;

void dfs(int v)
{
  c[v] = true;
  lwierz++;
  for (int i = 0; i < (int)t[v].size();i++)
  {
    int w = t[v][i];
    lkraw++;
    if (!c[w])
      dfs(w);
  }
}

int main()
{
  scanf("%d%d", &n, &m);
  while (m--)
  {
    int a, b;
    scanf("%d%d", &a, &b);
    a--; b--;
    t[a].push_back(b); t[b].push_back(a);
  }
  for (int i = 0; i < n; i++)
    if (!c[i])
    {
      lkraw = lwierz = 0;
      dfs(i);
      lkraw /= 2;
      if (lkraw > lwierz - 1)
      {
        puts("TAK");
        return 0;
      }
    }
  puts("NIE");
  return 0;
}
