#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff, M = (int)(2e3 + 100);
int main(void) {
  int n, m;
  while (~scanf("%d%d", &n, &m)) {
    map<int, int> s0, s1;
    map<int, int> cant;
    vector<int> v;
    int n0 = 0, n1 = 0;
    for (int i = 0; i < n; i++) {
      int temp;
      scanf("%d", &temp);
      v.push_back(temp);
      if (temp > 0) {
        s1[temp]++;
        n1++;
        if (s0.count(-temp) == 0) s0[-temp] = 0;
      } else {
        s0[temp]++;
        n0++;
        if (s1.count(-temp) == 0) s1[-temp] = 0;
      }
    }
    for (int i = 0; i < v.size(); i++) {
      int x = v[i];
      if (x > 0) {
        int z = n1 - s1[x];
        int y = s0[-x];
        if (n - (y + z) == m) {
          cant[v[i]]++;
          v[i] = 1;
        } else
          v[i] = 0;
      } else {
        if (m == 0 && n1 == 0)
          v[i] = 0;
        else if ((m == n0 - 1 && (!n1 || n1 != s1[-x]))) {
          cant[v[i]]++;
          v[i] = 1;
        } else
          v[i] = 0;
      }
    }
    for (int i = 0; i < v.size(); i++) {
      if (v[i] && cant.size() <= 1)
        cout << "Truth" << endl;
      else if (v[i] && cant.size() > 1)
        cout << "Not defined" << endl;
      else
        cout << "Lie" << endl;
    }
  }
}
