/*
*  Date: 13.05.12
*  Time: 00:14
*  Author:
*     Vanslov Evgeny
*     vans239@gmail.com
*/

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Collection;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class G {
    private final int size;
    private final int trueApprovals;
    private final int approvals[];

    public G(int size, int trueApprovals){
        this.size = size;
        this.trueApprovals = trueApprovals;
        approvals = new int[size + 1];
    }

    private void addApproval(final int num, final String approval){
        approvals[num] = Integer.valueOf(approval);
    }

    public Veracity veracity(final int i, final Set<Integer> solutions){
        //bad
        if(approvals[i] > 0){
            if(!solutions.contains(approvals[i]))
                return Veracity.LIE;
            for(final Integer solution : solutions){
                if(approvals[i] != solution){
                    return Veracity.NOT_DEFINED;
                }
            }
            return Veracity.TRUE;
        } else {
            if(!solutions.contains(-approvals[i]))
                return Veracity.TRUE;
            for(final Integer solution : solutions){
                if(-approvals[i] != solution){
                    return Veracity.NOT_DEFINED;
                }
            }
            return Veracity.LIE;
        }
    }
    public Set<Integer> findSolutions(){
        final Set<Integer> solutions = new HashSet<Integer>();
        final int sums[] = new int[size + 1];
        for(int i = 1; i <= size; ++i){
            sums[Math.abs(approvals[i])] += Integer.signum(approvals[i]);
        }

        int negative = 0;
        for(int i = 1; i <= size; ++i){
            if(sums[i] < 0){
                negative += -sums[i];
            }
        }
        for(int i = 1; i <= size; ++i){
            int possibleApprovals = negative;
            possibleApprovals += sums[i];
            if(possibleApprovals == trueApprovals){
                solutions.add(i);
            }
        }
        return solutions;
    }
    public static void main(String[] args) throws Exception {
        //final Scanner scanner = new Scanner(new BufferedReader(new FileReader("input2")));
        final Scanner scanner = new Scanner(new BufferedReader(new InputStreamReader(System.in)));

        final int size = scanner.nextInt();
        final int trueApprovals = scanner.nextInt();

        final G g = new G(size, trueApprovals);
        for(int i = 0; i < size; ++i){
            final String approval = scanner.next();
            g.addApproval(i + 1, approval);
        }
        final Set<Integer> solutions = g.findSolutions();
        for(int i = 1; i <= size; ++i){
            System.out.println(g.veracity(i, solutions).value());
        }
    }
}
class MyScanner {
    private final StreamTokenizer st;

    public MyScanner(final BufferedReader reader) throws Exception {
        st = new StreamTokenizer(reader);
    }

    public int nextInt() throws Exception {
        st.nextToken();
        return (int) st.nval;
    }

    public String next() throws Exception{
        st.nextToken();
        return st.sval;
    }
}
enum Veracity{
    TRUE("Truth"),
    LIE("Lie"),
    NOT_DEFINED("Not defined");
    Veracity(final String value){
        this.value = value;
    }
    private final String value;

    public String value() {
        return value;
    }
}

