func (h *Heap[E]) Fix(i int) {
	heap.Fix(&h.s, i)
}
Fix re-establishes the heap ordering
after the element at index i has changed its value.
Changing the value of the element at index i and then calling Fix
is equivalent to, but less expensive than,
calling h.Remove(i) followed by a Push of the new value.
The complexity is O(log n) where n = h.Len().
The index for use with Fix is recorded using the function passed to SetIndex.
package main
import (
	"container/heap"
	"fmt"
)
type Heap[E any] struct {
	s sliceHeap[E]
}
func New[E any](less func(E, E) bool) *Heap[E] {
	return &Heap[E]{sliceHeap[E]{less: less}}
}
func (h *Heap[E]) Push(elem E) {
	heap.Push(&h.s, elem)
}
func (h *Heap[E]) Pop() E {
	return heap.Pop(&h.s).(E)
}
func (h *Heap[E]) Peek() E {
	return h.s.s[0]
}
func (h *Heap[E]) Len() int {
	return len(h.s.s)
}
func (h *Heap[E]) Slice() []E {
	return h.s.s
}
func (h *Heap[E]) SetIndex(f func(E, int)) {
	h.s.setIndex = f
}