import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;


public class cf156b {
  public static void main(String[] args) {
    FastIO in = new FastIO(), out = in;
    int n = in.nextInt();
    int m = in.nextInt();
    int[] did = new int[n], didnt = new int[n];
    int totalDid = 0, totalDidnt = 0;
    Set<Integer> possible = new TreeSet<Integer>();
    boolean[] type = new boolean[n];
    int[] id = new int[n];
    for(int i=0; i<n; i++) {
      String s = in.next().trim();
      boolean accuse = s.charAt(0)=='+';
      int val = Integer.parseInt(s.substring(1))-1;
      type[i] = accuse;
      id[i] = val;
      if(accuse) {
        did[val]++;
        totalDid++;
      }
      else {
        didnt[val]++;
        totalDidnt++;
      }
    }
    for(int i=0; i<n; i++) {
      int truths = did[i] + (totalDidnt - didnt[i]);
      if(truths == m) possible.add(i);
    }
    for(int i=0; i<n; i++) {
      if(type[i]) {
        // accused
        if(!possible.contains(id[i]))
          out.println("Lie");
        else if(possible.size() != 1)
          out.println("Not defined");
        else
          out.println("Truth");
      }
      else {
        if(!possible.contains(id[i]))
          out.println("Truth");
        else if(possible.size() == 1)
          out.println("Lie");
        else
          out.println("Not defined");
      }
    }
    out.close();
  }
  static class FastIO extends PrintWriter {
    BufferedReader br;
    StringTokenizer st;
    
    public FastIO() {
      this(System.in,System.out);
    }
    public FastIO(InputStream in, OutputStream out) {
      super(new BufferedWriter(new OutputStreamWriter(out)));
      br = new BufferedReader(new InputStreamReader(in));
      scanLine();
    }
    public void scanLine() {
      try {
        st = new StringTokenizer(br.readLine().trim());
      } catch(Exception e) {
        throw new RuntimeException(e.getMessage());
      }
    }
    public int numTokens() {
      if(!st.hasMoreTokens()) {
        scanLine();
        return numTokens();
      }
      return st.countTokens();
    }
    public String next() {
      if(!st.hasMoreTokens()) {
        scanLine();
        return next();
      }
      return st.nextToken();
    }
    public double nextDouble() {
      return Double.parseDouble(next());
    }
    public long nextLong() {
      return Long.parseLong(next());
    }
    public int nextInt() {
      return Integer.parseInt(next());
    }
  }
}
