How do I use a priorityqueue in Java
https://stackoverflow.com/questions/683041/how-do-i-use-a-priorityqueue
How can building a heap be O(n) time complexity?
https://stackoverflow.com/questions/9755721/how-can-building-a-heap-be-on-time-complexity