how to solve hard logic puzzles