def evaluate_boolean_word_problem(input_text):
    # Step 1: Parse the input text to extract the chain of statements. Show the parsed statements.
    statements = parse_statements(input_text)
    print("Parsed statements:", statements)

    # Step 2: Initialize a dictionary to keep track of the truth value of each person. The first person always tells the truth.
    truth_values = {statements[0][0]: True}
    print("Initial truth values:", truth_values)

    # Step 3: Iterate over each statement, update the truth value of the person making the statement based on the person they are talking about.
    for statement in statements:
        person, target, truth = statement
        if truth == 'truth':
            truth_values[person] = truth_values[target]
        else:
            truth_values[person] = not truth_values[target]
        print(f"Updated truth values after processing statement '{person} says {target} tells the {truth}':", truth_values)

    # Step 4: Determine the final truth value of the person in question by looking up their truth value in the dictionary.
    final_person = input_text.split()[-5]
    final_truth_value = truth_values[final_person]
    print(f"Final truth value of {final_person}:", final_truth_value)

    # Step 5: Return the final answer. If the person in question tells the truth, return 'Yes'. Otherwise, return 'No'.
    if final_truth_value:
        return 'Yes'
    else:
        return 'No'