private void siftDown(int pos) {
            if (2 * pos >= size) return;
            int maxI = getMaxInd(2 * pos, 2 * pos + 1);
            if (heap.get(maxI).compareTo(heap.get(pos)) > 0) {
                swap(pos, maxI);
                siftDown(maxI);
            }
        }