import static java.lang.Math.*;
import java.io.*;
import java.math.*;
import java.util.*;

public class TaskB {
	MyScanner in;
	PrintWriter out;

	int n;
	int m;
	int a[];
	void load() throws Exception {
		n = in.nextInt();
		m = in.nextInt();
		a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = in.nextInt();
		}
	}

	void solve() throws Exception {
		int cntKiller[] = new int[n];
		int cntInnocent[] = new int[n];
		int sayedInnocent = 0;
		for (int i = 0; i < n; i++) {
			if (a[i] > 0) {
				cntKiller[a[i] - 1]++;
			} else {
				cntInnocent[-a[i] - 1]++;
				sayedInnocent++;
			}
		}
		
		HashSet<Integer> killers = new HashSet<Integer>();
		for (int i = 0; i < n; i++) {
			if (cntKiller[i] + sayedInnocent - cntInnocent[i] == m) {
				killers.add(i);
			}
		}
		
		if (killers.size() == 0) {
			throw new AssertionError();
		}
		
		for (int i = 0; i < n; i++) {
			if (a[i] > 0) {
				if (killers.contains(a[i] - 1)) {
					if (killers.size() == 1) {
						out.println("Truth");
					} else {
						out.println("Not defined");
					}
				} else {
					out.println("Lie");
				}
			} else {
				if (!killers.contains(-a[i] - 1)) {
					out.println("Truth");
				} else {
					if (killers.size() == 1) {
						out.println("Lie");
					} else {
						out.println("Not defined");
					}
				}
			}
		}
	}

	final String problem = "b";

	public void run() {
		try {
			Locale.setDefault(Locale.US);
			boolean oj = System.getProperty("ONLINE_JUDGE") != null;
			in = oj ? new MyScanner() : new MyScanner(problem + ".in");
			out = oj ? new PrintWriter(System.out) : new PrintWriter(problem
					+ ".out");
			load();
			solve();
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new TaskB().run();
	}

	class MyScanner {
		BufferedReader br;
		StringTokenizer st;

		MyScanner(String file) {
			try {
				br = new BufferedReader(new FileReader(new File(file)));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.exit(42);
			}
		}

		MyScanner() {
			try {
				br = new BufferedReader(new InputStreamReader(System.in));
			} catch (Exception e) {
				e.printStackTrace();
				System.exit(42);
			}
		}

		String nextToken() {
			while (st == null || (!st.hasMoreTokens())) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					System.exit(42);
				}
			}
			return st.nextToken();
		}

		int nextInt() throws Exception {
			return Integer.parseInt(nextToken());
		}

		double nextDouble() throws Exception {
			return Double.parseDouble(nextToken());
		}

		long nextLong() throws Exception {
			return Long.parseLong(nextToken());
		}

		BigInteger nextBigInteger(int radix) throws Exception {
			return new BigInteger(nextToken(), radix);
		}
	}

}