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);
        }
    }