Introduction to algorithms (Cormen)