How to Think and Solve Problems