#include <bits/stdc++.h>
using namespace std;
int v[100010], c[100010], cc[100010], ans[100010][3], id[100010], w[100010];
vector<int> a[100010], b[100010];
int main() {
  int i, j, k, n, m;
  while (~scanf("%d%d", &n, &m)) {
    for (i = 1; i <= n; i++) v[i] = c[i] = 0, a[i].clear(), b[i].clear();
    int num = 0;
    memset(ans, 0, sizeof(ans));
    for (i = 1; i <= n; i++) {
      char s;
      getchar();
      scanf("%c%d", &s, &j);
      if (s == '+')
        a[j].push_back(i), v[j]++, id[i] = 0;
      else
        b[j].push_back(i), c[j]++, num++, id[i] = 1;
    }
    int p = 0, res = 0, q;
    for (i = 1; i <= n; i++)
      if (v[i]) {
        p = v[i] + num - c[i];
        if (p == m) {
          memset(w, -1, sizeof(w));
          for (j = 0; j < a[i].size(); j++) w[a[i][j]] = 1;
          for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 0;
          for (j = 1; j <= n; j++)
            if (w[j] == -1)
              if (id[j] == 0)
                w[j] = 0;
              else
                w[j] = 1;
          for (j = 1; j <= n; j++) ans[j][w[j]]++;
        }
      }
    for (i = 1; i <= n; i++)
      if (c[i]) {
        p = num - c[i] + v[i];
        if (p == m) {
          memset(w, -1, sizeof(w));
          for (j = 0; j < a[i].size(); j++) w[a[i][j]] = 1;
          for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 0;
          for (j = 1; j <= n; j++)
            if (w[j] == -1)
              if (id[j] == 0)
                w[j] = 0;
              else
                w[j] = 1;
          for (j = 1; j <= n; j++) ans[j][w[j]]++;
        }
      }
    cerr << endl;
    memset(w, -1, sizeof(w));
    memcpy(cc, c, sizeof(c));
    p = m;
    q = num;
    for (i = 1; i <= n; i++)
      if (v[i]) {
        for (j = 0; j < a[i].size(); j++) w[a[i][j]] = 0;
        for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 1;
        p -= c[i];
        cc[i] = -1;
        q -= c[i];
      }
    if (p >= 0 && p <= q) {
      for (i = 1; i <= n; i++)
        if (cc[i] > 0) {
          if (cc[i] > p) {
            q -= cc[i];
            cc[i] = -1;
            for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 0;
          } else if (q - cc[i] != p) {
            q -= cc[i], p -= cc[i];
            cc[i] = -1;
            for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 1;
          }
        }
      int f = 0, ok = 1;
      vector<int> s;
      for (i = 1; i <= n; i++)
        if (cc[i] > 0 && cc[i] == p) f++, s.push_back(i);
      if ((f == 0 && p == 0) || (p && f <= 2 && f)) {
        if (f == 1) {
          i = s[0];
          for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 1;
        } else if (f > 1) {
          for (i = 0; i < s.size(); i++) {
            k = s[i];
            for (j = 0; j < b[k].size(); j++) w[b[k][j]] = 2;
          }
        }
        for (j = 1; j <= n; j++) ans[j][w[j]]++;
      }
    }
    cerr << endl;
    if (m >= num && num) {
      memset(w, -1, sizeof(w));
      memcpy(cc, v, sizeof(v));
      p = m;
      q = n - num;
      for (i = 1; i <= n; i++)
        if (c[i]) {
          for (j = 0; j < a[i].size(); j++) w[a[i][j]] = 0;
          for (j = 0; j < b[i].size(); j++) w[b[i][j]] = 1;
          p -= c[i];
          q -= cc[i];
          cc[i] = -1;
        }
      if (p >= 0 && p <= 1) {
        for (i = 1; i <= n; i++)
          if (cc[i] > 0)
            for (j = 0; j < a[i].size(); j++) w[a[i][j]] = 1;
        for (j = 1; j <= n; j++) ans[j][w[j]]++;
      }
    }
    for (i = 1; i <= n; i++) {
      if ((ans[i][0] && ans[i][1]) || ans[i][2])
        puts("Not defined");
      else if (ans[i][0])
        puts("Lie");
      else
        puts("Truth");
    }
    cerr << endl;
  }
}
