def mirror(t):
	temp = t.left
	l.left = t.right
	t.right = temp
	for c in (t.left, t.middle, t.right):
		if c:
			mirror(c)

def lflush(t):
	if not t.left:
		t.left = t.middle
	if not t.middle:
		t.middle = t.right
	for c in (t.left, t.middle, t.right):
		if c:
			lflush(c)


array A represents a given level
|A| = n
base case n=1 => OK
mirror and lflush dont modify A

recursive case: know true for n, show for n+1
l(m(A)) = l(m(l(A)))

l(m(A+x)) ?= l(m(l(A+x)))
two cases depending on x:

1/ x is non empty
	l(m(A+x)) = l(x+m(A)) = x+l(m(A))
	l(m(l(A+x))) = l(m(A1+x+A0))) = l(A0+x+m(A1)) = x+m(A1)+A0
l(m(A)) = m(A1)+A0
A1 non empty elements in A
A0 empty elements in A

2/ x is empty = 0
	l(m(A+0)) = l(0+m(A)) = l(m(A))+0
	l(m(l(A+0))) = l(m(l(A)+0)) = l(0+m(l(A))) = l(m(l(A)))+0