[X,Y,Z,V,W]

sort(nil) -> nil.
sort(cons(X,Y)) -> insert(X,sort(Y)).
insert(X,nil) -> cons(X,nil).
insert(X,cons(V,W)) -> choose(X,cons(V,W),X,V).
choose(X,cons(V,W),Y,0) -> cons(X,cons(V,W)).
choose(X,cons(V,W),0,s(Z)) -> cons(V,insert(X,W)).
choose(X,cons(V,W),s(Y),s(Z)) -> choose(X,cons(V,W),Y,Z).
