import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {

	public static void main(String[] args) throws IOException {
		InputStreamReader is = 
			new InputStreamReader(System.in);
		BufferedReader br = 
			new BufferedReader(is);
		String s = br.readLine();
		StringTokenizer st = new StringTokenizer(s, " ");
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		if (m == 0) {
			for(int i = 0; i < n; i++) {
				System.out.println("Lie");
			}
			return;
		}
	
		int info[] = new int[n + 1];
		boolean suspect[] = new boolean[n + 1];
		int notguilty[] = new int[n + 1];
		int guilty[] = new int[n + 1];
		for (int i = 0; i < n + 1; i++) {
			suspect[i] = false;
		}
		
		int mbnot_guilty = 0;
		int number;
		for (int i = 1; i <= n; i++) {
			s = br.readLine();
			st = new StringTokenizer(s);
			number = Integer.parseInt(st.nextToken());
			info[i] = number;
			if (number > 0) {
				guilty[number]++;
			}
			else {
				notguilty[-number]++;
				mbnot_guilty++;
			}
		}

		int susps = 0;
		for (int i = 1; i <= n; i++) {			
			if (guilty[i] - notguilty[i] + mbnot_guilty  == m) {
				suspect[i] = true;
				susps++;
			}
		}

		for (int i = 1; i <= n; i++) {
			
			if (info[i] > 0 && suspect[info[i]] && susps == 1) {
				System.out.println("Truth");
				continue;
			}
			
			if (info[i] > 0 && suspect[info[i]]) {
				System.out.println("Not defined");
				continue;
			}
			
			if (info[i] > 0 && !suspect[info[i]]) {
				System.out.println("Lie");
				continue;
			}
			
			if (!suspect[-info[i]]) {
				System.out.println("Truth");
				continue;
			}
			
			if (suspect[-info[i]] && susps == 1) {
				System.out.println("Lie");
				continue;
			}
			
			System.out.println("Not defined");
		}
	}
}