Practicing algorithms and data structures