type Heap struct {
// contains filtered or unexported fields
}
Heap uses items to build a heap which always pops the min weight item first.
It uses weight of item to sort items which may overflow because weight is an uint64 integer.
When overflow happens, its weight will turn to 0 and become one of the lightest items in heap.