(((# make)(# mon)(# left0) ( (*make?[left](# right) (mon![left,right] | make![right])) | (*make?[left](mon![left,left0])) | make![left0] | (*mon?[prev,next] (*prev?[](# crit) ( crit![] | (crit?[]next![])) )) | left0![] )))