#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000000000")
using namespace std;
const long long int INF = 2e18;
vector<vector<long long int> > f, s;
int main() {
  long long int n, m;
  cin >> n >> m;
  f.resize(n);
  s.resize(n);
  char a;
  long long int b;
  for (long long int i = 0; i < n; i++) {
    cin >> a >> b;
    b--;
    if (a == '+')
      f[b].push_back(i);
    else
      s[b].push_back(i);
  }
  vector<long long int> d(n), nd(n);
  long long int now = 0;
  for (long long int i = 0; i < n; i++) {
    d[i] = now;
    now += (long long int)s[i].size();
  }
  now = 0;
  for (long long int i = n - 1; i >= 0; i--) {
    nd[i] = now;
    now += (long long int)s[i].size();
  }
  map<long long int, long long int> ans;
  for (long long int i = 0; i < n; i++) {
    long long int sum = d[i] + nd[i] + (long long int)f[i].size();
    if (sum == m) ans[i]++;
  }
  vector<long long int> outer(n);
  for (long long int i = 0; i < n; i++) {
    long long int ag = (ans.count(i) && ans.size() > 1 ? 1
                        : ans.count(i)                 ? 2
                                                       : 0);
    for (long long int j = 0; j < f[i].size(); j++) {
      if (ag == 1)
        outer[f[i][j]] = 2;
      else
        outer[f[i][j]] = (ag ? 1 : 0);
    }
    for (long long int j = 0; j < s[i].size(); j++) {
      if (ag == 1)
        outer[s[i][j]] = 2;
      else
        outer[s[i][j]] = (ag ? 0 : 1);
    }
  }
  for (long long int i = 0; i < n; i++) {
    cout << (outer[i] == 0   ? "Lie"
             : outer[i] == 1 ? "Truth"
                             : "Not defined")
         << endl;
  }
}
