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

		Key max = pq[1];
		// exch(pq, 1, N);
		pq[1] = pq[N]; // half exchange
		pq[N--] = null;
		sink(1);

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

		// keep track of min
		if (N == 0)
			minIndex = -1;

		return max;
	}