#include <bits/stdc++.h>
using namespace std;
int gcd(int(a), int(b)) { return ((a) % (b) ? gcd((b), (a) % (b)) : (b)); }
long long lgcd(long long(a), long long(b)) {
  return ((a) % (b) ? gcd((b), (a) % (b)) : (b));
}
int lcm(int a, int b) { return (a) / gcd((a), (b)) * b; }
long long llcm(long long a, long long b) { return (a) / lgcd((a), (b)) * b; }
int n, m, ans[100010], crime[100010], notcrime[100010];
int main() {
  memset(ans, 0, sizeof(ans));
  memset(crime, 0, sizeof(crime));
  memset(notcrime, 0, sizeof(notcrime));
  scanf("%d%d", &n, &m);
  getchar();
  for (int i = 1; i <= n; i++) {
    char c;
    int temp;
    scanf("%c%d", &c, &temp);
    getchar();
    if (c == '+') {
      crime[temp]++;
      ans[i] = temp;
    } else {
      notcrime[temp]++;
      ans[i] = -temp;
    }
  }
  int nnc = 0;
  for (int i = 1; i <= n; i++) nnc += notcrime[i];
  int nc = 0;
  bool cc[100010];
  memset(cc, false, sizeof(cc));
  for (int i = 1; i <= n; i++) {
    if (crime[i] + nnc - notcrime[i] == m) {
      cc[i] = true;
      nc++;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (ans[i] > 0) {
      if (cc[((ans[i]) > 0 ? (ans[i]) : -(ans[i]))]) {
        if (nc > 1)
          printf("Not defined\n");
        else
          printf("Truth\n");
      } else
        printf("Lie\n");
    } else {
      if (cc[((ans[i]) > 0 ? (ans[i]) : -(ans[i]))]) {
        if (nc == 1)
          printf("Lie\n");
        else
          printf("Not defined\n");
      } else
        printf("Truth\n");
    }
  }
  return 0;
}
