puzzling logic