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

public class B {
	private static BufferedReader in = new BufferedReader(
			new InputStreamReader(System.in));
	private static PrintWriter out = new PrintWriter(System.out);

	public static void main(String[] args) throws Exception {
		String[] yy = in.readLine().split(" ");
		int n = Integer.parseInt(yy[0]), m = Integer.parseInt(yy[1]);
		int[] a = new int[n + 1], b = new int[n + 1];
		int[] c = new int[n + 1];
		int suma = 0, sumb = 0;
		for (int i = 1; i <= n; i++) {
			String h = in.readLine();
			int u = 0;
			if (h.startsWith("+")) {
				u = Integer.parseInt(h.substring(1));
			} else {
				u = -Integer.parseInt(h.substring(1));
			}
			c[i] = u;
			if (u > 0) {
				a[u]++;
				suma++;
			} else {
				b[-u]++;
				sumb++;
			}
		}
		boolean[] cankill = new boolean[n + 1];
		int y = 0;
		for (int i = 1; i<=n; i++) {
			int zi = a[i], pi = b[i];
			int zs = suma - zi, ps = sumb - pi;	
			if (zi + ps == m) {
				cankill[i] = true;
				y++;
			}
		}
		if (y == 0) throw new Exception();
		String[] ret = new String[n + 1];
		for (int i=1; i<=n; i++) {
			if (c[i] > 0) {
				if (cankill[c[i]]) {
					if (y == 1) {
						ret[i] = "Truth";
					} else {
						ret[i] = "Not defined";
					}
				} else {
					ret[i] = "Lie";
				}
			} else {
				c[i] = -c[i];
				if (cankill[c[i]]) {
					if (y == 1) {
						ret[i] = "Lie";
					} else {
						ret[i] = "Not defined";
					}
				} else {
					ret[i] = "Truth";
				}
				// c[i] < 0
			}
		}
		for (int i=1; i<=n; i++) {
			out.println(ret[i]);
		}
		out.flush();
	}
}
