#include <bits/stdc++.h>
using namespace std;
template <class T>
bool checkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
bool checkmin(T &a, T b) {
  return a > b ? a = b, 1 : 0;
}
template <class T>
void string_reader(string s, vector<T> &vec) {
  istringstream sin(s);
  copy(istream_iterator<T>(sin), istream_iterator<T>(), back_inserter(vec));
}
const int N = 100000;
char kd[N];
int per[N], sup[N], bcom[N], bdom[N];
int main() {
  int n, m;
  while (scanf("%d %d", &n, &m) == 2) {
    int com = 0, dom = 0;
    memset(bcom, 0, sizeof(bcom)), memset(bdom, 0, sizeof(bdom));
    memset(sup, 0, sizeof(sup));
    for (int i = 0; i < int(n); ++i) {
      scanf(" %c %d", &kd[i], &per[i]);
      per[i]--;
      com += (kd[i] == '+');
      bcom[per[i]] += (kd[i] == '+');
      dom += (kd[i] == '-');
      bdom[per[i]] += (kd[i] == '-');
    }
    int cnt = 0;
    for (int i = 0; i < int(n); ++i) {
      int rgt = bcom[i] + dom - bdom[i];
      if (rgt == m) sup[i]++, cnt++;
    }
    if (cnt == 1) {
      for (int i = 0; i < int(n); ++i) {
        if (sup[per[i]] == (kd[i] == '+'))
          puts("Truth");
        else
          puts("Lie");
      }
    } else {
      for (int i = 0; i < int(n); ++i) {
        if (sup[per[i]])
          puts("Not defined");
        else if (kd[i] == '-')
          puts("Truth");
        else
          puts("Lie");
      }
    }
  }
  return 0;
}
