Key
type Node struct {
	Key   uint64
	Value string
}

func SeachNodeList(arr []*Node, x uint64) int {
	return sort.Search(len(arr), func(i int) bool {
		return arr[i].Key >= x
	})
}

func InsertOrderedNodeList(arr []*Node, x *Node) []*Node {
	if x == nil {
		return arr
	}

	i := SeachNodeList(arr, x.Key)

	arr = append(arr, &Node{})
	copy(arr[i+1:], arr[i:])
	arr[i] = x

	return arr
}

func main() {
	var arr []*Node

	arr = InsertOrderedNodeList(arr, &Node{Key: 12, Value: "ha"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 1432, Value: "ta"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 112, Value: "see"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 1452, Value: "sight"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 13332, Value: "peer"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 12, Value: "one"})
	arr = InsertOrderedNodeList(arr, &Node{Key: 2, Value: "kiss"})

	for _, node := range arr {
		fmt.Println(*node)
	}
	
	// {2 kiss}
	// {12 one}
	// {12 ha}
	// {112 see}
	// {1432 ta}
	// {1452 sight}
	// {13332 peer}
}