#include <bits/stdc++.h>
using namespace std;
int main() {
  int N, M, pos = 0, neg = 0;
  cin >> N >> M;
  vector<int> vals(N);
  map<int, int> m1, m2;
  for (int i = 0; i < N; i++) {
    cin >> vals[i];
    if (vals[i] > 0)
      m1[vals[i]] += 1;
    else
      m2[-vals[i]] += 1;
    pos += (vals[i] > 0) ? 1 : 0;
    neg += (vals[i] < 0) ? 1 : 0;
  }
  set<int> possibs;
  for (map<int, int>::iterator it = m1.begin(); it != m1.end(); it++) {
    int t1 = it->second;
    int t2 = neg - m2[it->first];
    if (t1 + t2 == M) possibs.insert(it->first);
  }
  for (map<int, int>::iterator it = m2.begin(); it != m2.end(); it++) {
    int t1 = m1[it->first];
    int t2 = neg - (it->second);
    if (t1 + t2 == M) possibs.insert(it->first);
  }
  if (possibs.size() == 1) {
    int cul = *possibs.begin();
    for (int i = 0; i < vals.size(); i++) {
      if (vals[i] == cul || (vals[i] < 0 && vals[i] != -cul))
        cout << "Truth" << endl;
      else
        cout << "Lie" << endl;
    }
  } else {
    for (int i = 0; i < vals.size(); i++) {
      if (vals[i] > 0) {
        if (possibs.count(vals[i]) == 0)
          cout << "Lie" << endl;
        else
          cout << "Not defined" << endl;
      } else if (vals[i] < 0) {
        if (possibs.count(-vals[i]) == 0)
          cout << "Truth" << endl;
        else
          cout << "Not defined" << endl;
      }
    }
  }
  return 0;
}
