public Key delMin()
	{
		if (N == 0)
			throw new RuntimeException("Priority Queue Underflow");

		Key min = pq[1];

		pq[1] = pq[N]; // half exchange
		pq[N--] = null;
		sink(1);

		// resize
		if (N == pq.length / 4)
			pq = resize(pq, pq.length / 2);

		return min;
	}