/* Rozwiazanie wzorcowe do zadania KON (Koncentracja)
 * Autor: Jakub Radoszewski
 * Opis: dwukolorowanie grafu.
 */

#include <cstdio>
#include <utility>
using namespace std;

const int M = 2010;
int n, d;
int t[M][M];
pair<int, int> p[M];
int kolor[M];

long long sqr(int x) {
  return (long long)x * x;
}

long long odl(pair<int, int> a, pair<int, int> b) {
  return sqr(a.first - b.first) + sqr(a.second - b.second);
}

bool dfs(int v, int k) {
  kolor[v] = k;
  int k1 = 3 - k;
  for (int i = 0; i < n; i++)
    if (t[v][i]) {
      if (kolor[i] && kolor[i] != k1) return false;
      else if (!kolor[i]) {
        if (!dfs(i, k1)) return false;
      }
    }
  return true;
}

bool dasie(int d) {
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      t[i][j] = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (odl(p[i], p[j]) > sqr(d))
        t[i][j] = 1;
  for (int i = 0; i < n; i++)
    kolor[i] = 0;
  for (int i = 0; i < n; i++)
    if (!kolor[i]) {
      if (!dfs(i, 1)) return false;
    }
  return true;
}

void wypisz(int k) {
  int ile = 0;
  for (int i = 0; i < n; i++)
    ile += (kolor[i] == k);
  if (ile == n) {
    kolor[0] = 2;
    --ile;
  }
  printf("%d", ile);
  for (int i = 0; i < n; i++)
    if (kolor[i] == k)
      printf(" %d", i + 1);
  puts("");
}

int main() {
  scanf("%d%d", &n, &d);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &p[i].first, &p[i].second);
  }
  bool ok = dasie(d);
  if (!ok) puts("NIE");
  else {
    puts("TAK");
    wypisz(1);
    wypisz(2);
  }
  return 0;
}
