Problem Solving and Search Techniques