func timeheapFix(h timeheapInterface, i int) {
	if !timeheapdown(h, i, h.Len()) {
		timeheapup(h, 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 Remove(h, i) followed by a Push of the new value.
The complexity is O(log(n)) where n = h.Len().
package tinykv
type tohVal = *timeout
type timeheapInterface interface {
	Len() int
	Less(i, j int) bool
	Swap(i, j int)
	Push(x tohVal)  
	Pop() tohVal    
}
func timeheapInit(h timeheapInterface) {
	n := h.Len()
	for i := n/2 - 1; i >= 0; i-- {
		timeheapdown(h, i, n)
	}
}
func timeheapPush(h timeheapInterface, x tohVal) {
	h.Push(x)
	timeheapup(h, h.Len()-1)
}
func timeheapPop(h timeheapInterface) tohVal {
	n := h.Len() - 1
	h.Swap(0, n)
	timeheapdown(h, 0, n)
	return h.Pop()
}
func timeheapRemove(h timeheapInterface, i int) tohVal {
	n := h.Len() - 1
	if n != i {
		h.Swap(i, n)
		if !timeheapdown(h, i, n) {
			timeheapup(h, i)
		}
	}
	return h.Pop()
}