How to Solve It by Zbigniew Michalewicz & David B. Fogel