Algorithms and Data Structures in Python