#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <string.h>
#define pb push_back
#define all(x) (x).begin(), x.end()
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vector<int> >
#define vll vector<long long>
#define SQ(a) (a)*(a)
#define pb push_back
#define mk make_pair
#define rep(i, a, n) for(int i = a; i < n; i++)
#define per(i, n, a) for(int i = n-1; i >= a; i--)
#define fr first
#define sc second
#define FILE "474"
#define standart 1
typedef long long ll;
typedef __int64 i64;
using namespace std;
const int INF = 1e9 + 322;
const ll LINF = 2e18 + 228;
const int MAXN = 1e5 + 228;
const int MOD = 1e9 + 7;
const double eps = 1e-14;
int n, k, a[MAXN], x[MAXN], m;
char c[MAXN];
void solve(){
    cin >> n >> k;
    rep(i, 0, n){
        cin >> c[i] >> x[i];
        if(c[i] == '+') a[x[i]]++;
        else m ++;
    }
    rep(i, 0, n) a[x[i]] += m;
    rep(i, 0, n){
        if(c[i]  == '-') a[x[i]]--;
    }
    int t = 0;
    rep(i, 1, n+1){
        if(a[i] == k) t++;
    }
    if(k == 0){
        rep(i, 0, n) puts("Lie");
        return ;
    }
    if(t == 1){
        rep(i, 0, n){
            if((c[i] == '+' && a[x[i]] == k) || (c[i] == '-' && a[x[i]] != k)) puts("Truth");
            else puts("Lie");
        }
    }
    else{
        rep(i, 0, n){
            if(c[i] == '+') {
                if(a[x[i]] == k) puts("Not defined");
                else puts("Lie");
            }
            else{
                if(a[x[i]] == k) puts("Not defined");
                else puts("Truth");
            }
        }
    }
    /**
        4 3
        -4
        -3
        -1
        -3

    */
}
int main(){
    if(!standart) {
        freopen(FILE".in", "r", stdin);
        freopen(FILE".out", "w", stdout);
    }
    int T = 1;
    while(T--)
        solve();
    return 0;
}
