#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
const double Pi = acos(-1);
bool inline equ(double a, double b) { return fabs(a - b) < EPS; }
int _R(int& x) { return scanf("%d", &x); }
int _R(long long& x) { return scanf("%" PRId64, &x); }
int _R(double& x) { return scanf("%lf", &x); }
int _R(char* s) { return scanf("%s", s); }
int R() { return 0; }
template <typename T1, typename... T2>
int R(T1& x, T2&... tail) {
  int tmp = _R(x);
  return tmp + R(tail...);
}
template <typename Iter, typename F>
inline void out(Iter s, Iter e, F of) {
  bool flag = 0;
  for (Iter it = s; it != e; it++) {
    if (flag)
      printf(" ");
    else
      flag = 1;
    of(*it);
  }
  puts("");
}
const int MAXN = 1e5 + 10;
int n, m;
int in[MAXN];
int tot_pos, tot_neg;
int pos_cnt[MAXN], neg_cnt[MAXN];
set<int> criminals;
inline bool chk(int x) {
  int truth = 0;
  truth += pos_cnt[x];
  truth += tot_neg - neg_cnt[x];
  ;
  return truth == m;
}
inline void go(int x) {
  if (in[x] > 0) {
    if (!criminals.count(in[x]))
      puts("Lie");
    else if ((int)(criminals).size() > 1)
      puts("Not defined");
    else
      puts("Truth");
  } else {
    if (criminals.count(-in[x])) {
      if ((int)(criminals).size() > 1)
        puts("Not defined");
      else
        puts("Lie");
    } else
      puts("Truth");
  }
}
int main() {
  R(n, m);
  for (int i = (1); i <= (n); i++) R(in[i]);
  for (int i = (1); i <= (n); i++)
    if (in[i] > 0) {
      tot_pos++;
      pos_cnt[in[i]]++;
    } else {
      tot_neg++;
      neg_cnt[-in[i]]++;
    }
  for (int i = (1); i <= (n); i++) {
    if (chk(i)) {
      criminals.insert(i);
      ;
    }
  }
  for (int i = (1); i <= (n); i++) go(i);
}
