Introduction to the Design and Analysis of Algorithms (2nd Edition)