#include <bits/stdc++.h>
using namespace std;
int N, M;
int A[100000];
int cntBad[100000], cntGood[100000];
int allGood;
int main() {
  cin.sync_with_stdio(false);
  cin >> N >> M;
  for (int i = 0; i < N; i++) {
    cin >> A[i];
    if (A[i] > 0) {
      cntBad[A[i] - 1]++;
    } else {
      cntGood[-A[i] - 1]++;
      allGood++;
    }
  }
  vector<int> truly;
  for (int i = 0; i < N; i++) {
    if (cntBad[i] + (allGood - cntGood[i]) == M) {
      truly.push_back(i);
    }
  }
  if (truly.size() == 1) {
    int t = truly[0];
    for (int i = 0; i < N; i++) {
      if (A[i] > 0 && A[i] - 1 == t) {
        cout << "Truth\n";
      } else if (A[i] < 0 && -A[i] - 1 != t) {
        cout << "Truth\n";
      } else {
        cout << "Lie\n";
      }
    }
  } else {
    for (int i = 0; i < N; i++) {
      if (A[i] > 0) {
        if (binary_search(truly.begin(), truly.end(), A[i] - 1)) {
          cout << "Not defined\n";
        } else {
          cout << "Lie\n";
        }
      } else {
        if (binary_search(truly.begin(), truly.end(), -A[i] - 1)) {
          cout << "Not defined\n";
        } else {
          cout << "Truth\n";
        }
      }
    }
  }
  return 0;
}
