flatten
nil
nil
flatten
unit
x
flatten
x
flatten
++
x
y
++
flatten
x
flatten
y
flatten
++
unit
x
y
++
flatten
x
flatten
y
flatten
flatten
x
flatten
x
rev
nil
nil
rev
unit
x
unit
x
rev
++
x
y
++
rev
y
rev
x
rev
rev
x
x
++
x
nil
x
++
nil
y
y
++
++
x
y
z
++
x
++
y
z
2.2
++
++
x
y
z
++
x
++
y
z
flatten
++
x
y
flatten
y
rev
++
x
y
rev
x
flatten
++
unit
x
y
flatten
x
flatten
++
unit
x
y
flatten
y
rev
++
x
y
++
rev
y
rev
x
flatten
++
unit
x
y
++
flatten
x
flatten
y
flatten
++
x
y
flatten
x
++
++
x
y
z
++
y
z
flatten
unit
x
flatten
x
rev
++
x
y
rev
y
flatten
++
x
y
++
flatten
x
flatten
y
true
rev
++
x
y
rev
y
rev
++
x
y
rev
x
true
rev
1
1
0
flatten
1
0
++
2
1
2
1
unit
1
0
++
2
0
nil
0
0
rev
1
0
flatten
1
0
flatten
++
unit
x
y
flatten
y
flatten
unit
x
flatten
x
flatten
++
unit
x
y
flatten
x
flatten
++
x
y
flatten
y
flatten
++
x
y
flatten
x
true
rev
1
0
flatten
1
0
++
2
1
2
1
unit
1
1
1
++
2
0
nil
0
0
rev
1
0
flatten
1
1
0
flatten
++
x
y
++
flatten
x
flatten
y
false
flatten
++
unit
x
y
++
flatten
x
flatten
y
false
rev
++
x
y
++
rev
y
rev
x
false
++
++
x
y
z
++
y
z
++
++
x
y
z
++
x
++
y
z
true
rev
1
0
flatten
1
0
++
2
1
2
1
unit
1
1
++
2
1
0
nil
0
7758
rev
1
0
flatten
1
0
NaTT
certifiable-1.6