Algorithm, Analysis & Design