Logic puzzle.