#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool chkmin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
const int INF = 1e8;
const int oo = 0x3f3f3f3f;
const double eps = 1e-10;
int inline in() {
  int x = 0, c;
  for (; (unsigned)((c = getchar()) - '0') >= 10;) {
    if (c == '-') return -in();
    if (!~c) throw ~0;
  }
  do {
    x = (x << 3) + (x << 1) + (c - '0');
  } while ((unsigned)((c = getchar()) - '0') < 10);
  return x;
}
int n, m;
const int Maxn = 1e5 + 5;
int a[Maxn];
int b[2][Maxn];
int cnt[Maxn];
bool possible[Maxn];
int ans[Maxn];
const string S[3] = {"Not defined", "Truth", "Lie"};
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    b[a[i] > 0 ? 1 : 0][abs(a[i])]++;
  }
  cnt[1] = b[1][1];
  for (int i = 2; i <= n; i++) cnt[1] += b[0][i];
  for (int i = 2; i <= n; i++) {
    cnt[i] = cnt[i - 1] - b[1][i - 1] + b[1][i] - b[0][i] + b[0][i - 1];
  }
  int t = 0;
  for (int i = 1; i <= n; i++) {
    if (cnt[i] == m) {
      possible[i] = true;
      t++;
    }
  }
  for (int i = 1; i <= n; i++) {
    int id = abs(a[i]);
    if (a[i] < 0) {
      if (possible[id]) {
        if (t == 1)
          ans[i] = 2;
        else
          ans[i] = 0;
      } else
        ans[i] = 1;
    } else {
      if (possible[id]) {
        if (t == 1)
          ans[i] = 1;
        else
          ans[i] = 0;
      } else
        ans[i] = 2;
    }
  }
  for (int i = 1; i <= n; i++) {
    cout << S[ans[i]] << endl;
  }
  return 0;
}
