Make and test a Priority Queue. This should be made so that it is easily adaptable to the shortest path through a map assignment, but that does not require any extra work, it is just a matter of good design. Implement a struct or class that represents a place. All it needs to have is a string for its name and an int for its priority (best distance known so far). Implement a Priority Queue that stores pointers to those objects. Make an interactive test, which takes commands from the user, and adds or removes things from the queue accordingly. The user may type one of three things: exit stop the program add name prio add a place with the given priority to the queue, except that if a place with that name is already in the queue, just change its priority (and adjust its position), do not add a duplicate entry. remove remove the place with the best priority from the queue. After each add or remove command, your program should print the entire contents of the priority queue. The purpose is to allow you to test the queue's functionality thoroughly before using it in a more complicated project. An example run (you do not have to duplicate this exactly): > add a 50 queue contains a 50 > add cat 35 queue contains cat 35 a 50 > add dog 70 queue contains cat 35 a 50 dog 70 > add b 40 queue contains cat 35 b 40 a 50 dog 70 > remove removed cat at 35, queue contains b 40 a 50 dog 70 > remove removed b at 40, queue contains a 50 dog 70 > add dog 45 queue contains dog 45 a 50 > remove removed dog at 45, queue contains a 50 > exit