#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000 * 100 + 10;
int n, m, Sp, Sq, w[MAXN];
vector<int> icrim[MAXN], ncrim[MAXN], bad;
bool isMark[MAXN];
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    int x;
    cin >> x;
    if (x > 0) {
      Sp++;
      icrim[x].push_back(i);
    } else {
      Sq++;
      ncrim[-x].push_back(i);
    }
  }
  for (int i = 1; i <= n; ++i)
    if ((icrim[i].size() + (Sq - ncrim[i].size())) == m) {
      isMark[i] = true;
      bad.push_back(i);
    }
  if (bad.size() == 1) {
    int x = bad[0];
    for (int i = 1; i <= n; ++i)
      if (i == x) {
        for (int j = 0; j < (int)icrim[i].size(); ++j) w[icrim[i][j]] = 1;
        for (int j = 0; j < (int)ncrim[i].size(); ++j) w[ncrim[i][j]] = 3;
      } else {
        for (int j = 0; j < (int)icrim[i].size(); ++j) w[icrim[i][j]] = 3;
        for (int j = 0; j < (int)ncrim[i].size(); ++j) w[ncrim[i][j]] = 1;
      }
  } else {
    for (int i = 1; i <= n; ++i)
      if (isMark[i]) {
        for (int j = 0; j < (int)icrim[i].size(); ++j) w[icrim[i][j]] = 2;
        for (int j = 0; j < (int)ncrim[i].size(); ++j) w[ncrim[i][j]] = 2;
      } else {
        for (int j = 0; j < (int)icrim[i].size(); ++j) w[icrim[i][j]] = 3;
        for (int j = 0; j < (int)ncrim[i].size(); ++j) w[ncrim[i][j]] = 1;
      }
  }
  for (int i = 1; i <= n; ++i)
    if (w[i] == 1)
      cout << "Truth" << endl;
    else if (w[i] == 2)
      cout << "Not defined" << endl;
    else
      cout << "Lie" << endl;
  return 0;
}
