add priority queue based on heap