Introduction To The Design And Analysis Of Algorithms by Anany Levitin