#include <bits/stdc++.h>
using namespace std;
template <class T>
inline int cMin(T& a, T b) {
  return b < a ? a = b, 1 : 0;
}
template <class T>
inline int cMax(T& a, T b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
inline string to_str(T v) {
  ostringstream os;
  os << v;
  return os.str();
}
const double pi = acos(-1.0);
const double eps = 1e-9;
template <class T>
inline T isqr(T v) {
  return v * v;
}
template <class T>
inline T iabs(T v) {
  return v < 0 ? -v : v;
}
template <class T>
inline int isgn(T v) {
  return iabs(v) <= eps ? 0 : (v < 0 ? -1 : 1);
}
template <typename T>
inline T next() {
  static char buf[64];
  scanf("%s", buf);
  istringstream is(buf);
  T v;
  is >> v;
  return v;
}
inline int nextInt() {
  int v = 0;
  scanf("%d", &v);
  return v;
}
const int NN = 100000 + 8;
int N, M;
int src[NN];
int Y[NN] = {0}, H[NN] = {0};
char buf[1024];
bool OK[NN] = {false};
int main(int argc, char* argv[]) {
  scanf("%d%d", &N, &M);
  int z = 0;
  for (int i = 0; i < (int)(N); ++i) {
    int v = 0;
    scanf("%d", &v);
    src[i] = v;
    if (v < 0)
      ++H[-v];
    else
      ++Y[v], ++z;
  }
  int cnt = 0;
  for (int i = 1; i <= (int)(N); ++i) {
    int v = N - (H[i] + z - Y[i]);
    if (v == M) {
      ++cnt;
      OK[i] = true;
    }
  }
  for (int i = 0; i < (int)(N); ++i) {
    if (src[i] < 0) {
      if (OK[-src[i]]) {
        if (cnt == 1)
          puts("Lie");
        else
          puts("Not defined");
      } else
        puts("Truth");
    } else {
      if (OK[src[i]]) {
        if (cnt == 1)
          puts("Truth");
        else
          puts("Not defined");
      } else {
        puts("Lie");
      }
    }
  }
  return 0;
}
