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

		Key min = heap[1];

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

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

		return min;
	}