#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
int a[MAXN + 10], vis[MAXN + 10];
struct w {
  int d1, d2, op;
} d[MAXN + 10];
inline int read();
inline bool cmp(const w &, const w &);
int main() {
  int n, m;
  int s = 0, crime = 0;
  n = read(), m = read();
  for (register int i = 1; i <= n; ++i) {
    a[i] = read();
    if (a[i] > 0)
      ++d[a[i]].d1;
    else
      ++s, ++d[-a[i]].d2;
    d[i].op = i;
  }
  if (n == m) {
    for (register int i = 1; i <= n; ++i) printf("Truth\n");
    return 0;
  }
  sort(d + 1, d + n + 1, cmp);
  for (register int i = 1; i <= n; ++i) {
    if (s - d[i].d2 + d[i].d1 > m) vis[d[i].op] = 1, m -= d[i].d2;
    if (d[i].d2 > m) crime = d[i].op;
  }
  if (crime) {
    for (register int i = 1; i <= n; ++i) {
      if (a[i] > 0) {
        if (a[i] == crime)
          printf("Truth\n");
        else
          printf("Lie\n");
      } else {
        if (-a[i] != crime)
          printf("Truth\n");
        else
          printf("Lie\n");
      }
    }
    return 0;
  }
  for (register int i = 1; i <= n; ++i) {
    if (!vis[abs(a[i])]) --m;
  }
  for (register int i = 1; i <= n; ++i) {
    if (vis[abs(a[i])]) {
      if (a[i] < 0)
        printf("Truth\n");
      else
        printf("Lie\n");
    } else {
      if (!m)
        printf("Truth\n");
      else
        printf("Not defined\n");
    }
  }
  return 0;
}
inline int read() {
  int x = 0, f = 0;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = 1;
    c = getchar();
  }
  while (isdigit(c)) x = (x << 1) + (x << 3) + (c & 15), c = getchar();
  return f ? -x : x;
}
inline bool cmp(const w &x, const w &y) { return x.d2 - x.d1 < y.d2 - y.d1; }
