func (l *List) InsertBefore(v int, mark *Element) *Element {
	e := &Element{Value: v, Prev: mark.Prev, Next: mark}
	e.Next.Prev = e
	e.Prev.Next = e
	l.N++
	return e
}
//InsertBefore inserts a new element e with value v immediately before mark and returns e.
//If mark is not an element of l, the list is not modified. The mark must not be nil.

InsertBefore inserts a new element e with value v immediately before mark and returns e.
If mark is not an element of l, the list is not modified. The mark must not be nil.
// InsertBefore inserts a new element e with value v immediately before mark and returns e . // If mark is not an element of l the list is not modified . The mark must not be nil .
func (l *List) InsertBefore(v int, mark *Element) *Element {
	e := &Element{Value: v, Prev: mark.Prev, Next: mark}
	e.Next.Prev = e
	e.Prev.Next = e
	l.N++
	return e
}
func ( l * List ) InsertBefore ( v int , mark * Element ) * Element { e := & Element { Value : v , Prev : mark . Prev , Next : mark } e . Next . Prev = e e . Prev . Next = e l . N ++ return e }
InsertBefore inserts a new element e with value v immediately before mark and returns e.
If mark is not an element of l, the list is not modified.
InsertBefore inserts a new element e with value v immediately before mark and returns e . If mark is not an element of l the list is not modified .