Data Structures and Algorithms in Python