Critical Thinking for Problem Solving