:- module a. :- interface. :- import_module io. :- pred main(io::di, io::uo) is det. :- implementation. :- import_module int, solutions. :- type apply ---> first ; second ; take(int). :- pred revert(int::in, apply::out) is multi. revert(N, Target) :- ( (N rem 0x02 = 0x00, Temp = first ; N rem 0x03 = 0x00, Temp = second) -> Target = Temp ; Target = take(N) ). main(!IO) :- solutions(revert(5), N), write(N, !IO). :- end_module a.