Introduction to Algorithms: A Creative Approach