Consider again a potentially large collection of towns, each of which can hold many people, just as in the previous homework.
This time, however, since each person has a unique ID number and a name (possibly not unique), we want to be able to find
people as quickly as possible by searching for their ID, or their name, or their town-rank. Each town maintains a queue of
the people as they arrive in a town, so a person's town-rank is their position in that town's queue. Do note that having
many duplicates of information is a recipe for disaster in attempting to keep all the copies in sync with each other, so
having separate lists of people according to their different attributes would be a poor choice.
You should think carefully how you would access people quickly, and build a class to have a data structure which allows
fast searching, perhaps via binary trees, bearing in mind that people will be leaving and joining various town queues.
It may be that a later homework might have you grant priority treatment to some people, or even have you find efficient
ways of having groups of friends meet up in a single town, so do think ahead as you build this structure.
For this question, you should not use lists, tuples, etc. from Python as the core storage components, nor use any Python
sorting methods.