docs: def siftdown(heap1, heap2, elt):
      """Restore the heap property for a heap with an out of place element
      at position ``elt``. This works with a heap pair where heap1 carries
      the weights and heap2 holds the corresponding elements."""
      while elt * 2 + 1 < heap1.shape[0]:
          left_child = elt * 2 + 1
          right_child = left_child + 1
          swap = elt
  
          if heap1[swap] < heap1[left_child]:
              swap = left_child
  
          if right_child < heap1.shape[0] and heap1[swap] < heap1[right_child]:
              swap = right_child
  
          if swap == elt:
              break
          else:
              heap1[elt], heap1[swap] = heap1[swap], heap1[elt]
              heap2[elt], heap2[swap] = heap2[swap], heap2[elt]
              elt = swap