
:- 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.
