Design and Analysis of Algorithms I