#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:300000000")
#pragma warning(disable : 4800)
using namespace std;
const double pi = 3.1415926535897932384626433832795;
template <class T>
T abs(const T &a) {
  return a >= 0 ? a : -a;
};
template <class T>
T sqr(const T &x) {
  return x * x;
}
int n, m;
vector<pair<char, int> > v;
vector<int> gcnt, ngcnt;
int allGCnt, allNGCnt;
bool canBeGuilty(int k) {
  int r = 0;
  r += gcnt[k];
  r += allNGCnt - ngcnt[k];
  return r == m;
}
set<int> g;
int main() {
  cin >> n >> m;
  v.resize(n);
  gcnt.resize(n);
  ngcnt.resize(n);
  for (int i = 0; i < (n); i++) {
    cin >> v[i].first >> v[i].second;
    v[i].second--;
    if (v[i].first == '+') {
      gcnt[v[i].second]++;
      allGCnt++;
    } else {
      ngcnt[v[i].second]++;
      allNGCnt++;
    }
  }
  for (int i = 0; i < (n); i++)
    if (canBeGuilty(i)) g.insert(i);
  for (int i = 0; i < (n); i++) {
    bool canBeTrue, canBeFalse;
    if (v[i].first == '+') {
      canBeTrue = g.count(v[i].second);
      canBeFalse = !(int((g).size()) == 1 && *g.begin() == v[i].second);
    } else {
      canBeFalse = g.count(v[i].second);
      canBeTrue = !(int((g).size()) == 1 && *g.begin() == v[i].second);
    }
    if (canBeTrue && canBeFalse)
      cout << "Not defined" << endl;
    else if (canBeTrue)
      cout << "Truth" << endl;
    else
      cout << "Lie" << endl;
  }
}
