Introduction to Algorithms - Thomas H. Cormen