Problem Solving by Jesse A. Rudnick & Stephen Krulik