mv(A,B,[to(A,B)]).

hanoi(0,_,_,_,[]).
hanoi(1,A,B,_,M) :- mv(A,B,M).
hanoi(N,A,B,C,M) :- N1 is N-1,
		    hanoi(N1,A,C,B,AtoC),
		    mv(A,B,MV),
		    hanoi(N1,C,B,A,CtoA),!,
		    append(AtoC,[MV|CtoA],M).

