
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashSet;

public class D {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);
        String[] S = in.readLine().split(" ");
        int n = Integer.parseInt(S[0]);
        int m = n - Integer.parseInt(S[1]);
        int[] s = new int[n];
        int[] ns = new int[n];
        int pos = 0;
        int neg = 0;
        String[] T = new String[n];
        for (int i = 0; i < n; i++) {
            String temp = T[i] = in.readLine();
            if (temp.charAt(0) == '+') {
                pos++;
                s[temp.charAt(1) - '1']++;
            } else {
                neg++;
                ns[temp.charAt(1) - '1']++;
            }
        }
        HashSet<Integer> Can = new HashSet<Integer>();
        for (int i = 0; i < n; i++)
            if (ns[i] + pos - s[i] == m)
                Can.add(i);
        for (int i = 0; i < n; i++) {
            int x = Math.abs(Integer.parseInt(T[i].substring(1))) - 1;
            if (T[i].charAt(0) == '+') {
                if (!Can.contains(x))
                    out.println("Lie");
                else if (Can.size() == 1)
                    out.println("Truth");
                else
                    out.println("Not defined");
            } else {
                if (!Can.contains(x))
                    out.println("Truth");
                else if (Can.size() == 1)
                    out.println("Lie");
                else
                    out.println("Not defined");
            }
        }
        out.flush();
        out.close();
    }
}
