selectx'revprefixConsxxsmapconsappx'permuterevapprevprefixConsxxsselectxConsx'revprefixxsrevappConsxxsrestrevappxsConsxrestpermuteConsxxsselectxNilxsmapconsappx'ConsxxsrestConsConsx'xmapconsappx'xsrestselectxrevprefixNilmapconsappxpermuterevapprevprefixNilNilrevappNilrestrestpermuteNilConsNilNilmapconsappxNilrestrestgoalxspermutexsselect3Cons2mapconsapp3permute1revapp2Nil0goal1INNERMOST