#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> c[100010], d[100010];
int mark[100010];
bool M[100010];
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    if (x > 0)
      c[x].push_back(i + 1);
    else
      d[-x].push_back(i + 1);
  }
  int sum = 0;
  for (int i = 1; i <= n; i++) sum += d[i].size();
  vector<int> flag;
  for (int i = 1; i <= n; i++) {
    if (c[i].size() + sum - d[i].size() == m) flag.push_back(i), M[i] = 1;
  }
  if (flag.size() == 1) {
    for (int i = 0; i < c[flag[0]].size(); i++) mark[c[flag[0]][i]] = 1;
    for (int i = 1; i <= n; i++)
      if (i != flag[0])
        for (int j = 0; j < d[i].size(); j++) mark[d[i][j]] = 1;
    for (int i = 1; i <= n; i++)
      if (mark[i])
        printf("Truth\n");
      else
        printf("Lie\n");
  } else {
    for (int i = 0; i < flag.size(); i++) {
      for (int j = 0; j < c[flag[i]].size(); j++) mark[c[flag[i]][j]] = 3;
      for (int j = 0; j < d[flag[i]].size(); j++) mark[d[flag[i]][j]] = 3;
    }
    for (int i = 1; i <= n; i++)
      if (!M[i]) {
        for (int j = 0; j < c[i].size(); j++) mark[c[i][j]] = 2;
        for (int j = 0; j < d[i].size(); j++) mark[d[i][j]] = 1;
      }
    for (int i = 1; i <= n; i++)
      if (mark[i] == 3)
        printf("Not defined\n");
      else if (mark[i] == 2)
        printf("Lie\n");
      else
        printf("Truth\n");
  }
}
