Priority queue(by min heap)