#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
multiset<long long int> pos, neg;
long long int a[N], cnt[N + 1], cnt2[N];
string ans[N];
int main() {
  long long int n, m, tl = 0, tr = 0;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    long long int s;
    cin >> s;
    a[i] = s;
    if (s > 0) {
      cnt[s]++;
      pos.insert(s);
    } else {
      cnt2[-s]++;
      neg.insert(-s);
    }
  }
  if (m == n) {
    for (int i = 0; i < n; i++) cout << "Truth" << endl;
    return 0;
  }
  if (m == 0) {
    for (int i = 0; i < n; i++) cout << "Lie" << endl;
    return 0;
  }
  long long int f = 0;
  for (int i = 1; i < n + 1; i++) {
    if (cnt[i] < m) {
      f++;
    }
  }
  for (int i = 0; i < n; i++) {
    long long int tp = pos.count(abs(a[i]));
    long long int tn = neg.count(abs(a[i]));
    if (a[i] > 0) {
      if (tp > m || pos.size() - tp > n - m ||
          neg.size() - neg.count(a[i]) + 1 > m) {
        ans[i] = "Lie";
        tl++;
        continue;
      }
      if (tn > m || tp > n - m) {
        ans[i] = "Truth";
        tr++;
        continue;
      }
      ans[i] = "Not defined";
    } else {
      if (tn > m) {
        ans[i] = "Lie";
        tl++;
        continue;
      }
      if (tp > m || tn > n - m) {
        ans[i] = "Truth";
        tr++;
        continue;
      }
      ans[i] = "Not defined";
    }
  }
  for (int i = 0; i < n; i++) {
    if (ans[i] == "Not defined") {
      if (tr == m) {
        ans[i] = "Lie";
      }
      if (tl == n - m) {
        ans[i] = "Truth";
      }
    }
    cout << ans[i] << endl;
  }
}
