#include <bits/stdc++.h>
using namespace std;
template <typename T>
T abs(T a) {
  return a < 0 ? -a : a;
}
template <typename T>
T sqr(T a) {
  return a * a;
}
const int INF = (int)1e9;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
int main() {
  long long n, m, num = 0, nump = 0, numm = 0, lie, lie1;
  cin >> n >> m;
  lie = n - m;
  int gp[100000], gm[100000], g[100000], out[100000];
  for (long long i = 0; i < n; i++) {
    gp[i] = 0;
    gm[i] = 0;
    g[i] = 0;
    out[i] = 0;
  }
  vector<int> gp1[100000];
  vector<int> gm1[100000];
  char tmp1;
  long long tmp2;
  for (long long i = 0; i < n; i++) {
    cin >> tmp1 >> tmp2;
    tmp2--;
    if (tmp1 == '+') {
      gp[tmp2]++;
      nump++;
      gp1[tmp2].push_back(i);
    } else {
      gm[tmp2]++;
      numm++;
      gm1[tmp2].push_back(i);
    }
  }
  for (long long i = 0; i < n; i++) {
    lie1 = nump - gp[i] + gm[i];
    if (lie1 == lie) {
      num++;
      g[i] = 1;
    }
  }
  if (num == 1)
    for (long long i = 0; i < n; i++)
      if (g[i] == 1) {
        for (long long j = 0; j < gp1[i].size(); j++) out[gp1[i][j]] = 2;
        for (long long j = 0; j < gm1[i].size(); j++) out[gm1[i][j]] = 1;
      } else {
        for (long long j = 0; j < gp1[i].size(); j++) out[gp1[i][j]] = 1;
        for (long long j = 0; j < gm1[i].size(); j++) out[gm1[i][j]] = 2;
      }
  else
    for (long long i = 0; i < n; i++)
      if (g[i] == 1) {
        for (long long j = 0; j < gp1[i].size(); j++) out[gp1[i][j]] = 3;
        for (long long j = 0; j < gm1[i].size(); j++) out[gm1[i][j]] = 3;
      } else {
        for (long long j = 0; j < gp1[i].size(); j++) out[gp1[i][j]] = 1;
        for (long long j = 0; j < gm1[i].size(); j++) out[gm1[i][j]] = 2;
      }
  for (long long i = 0; i < n; i++)
    if (out[i] == 1)
      cout << "Lie" << endl;
    else if (out[i] == 2)
      cout << "Truth" << endl;
    else if (out[i] == 3)
      cout << "Not defined" << endl;
  return 0;
}
