antimv(cw,ac).
antimv(ac,cw).

hanoi(0,_,[]).
hanoi(1,M,[M]) :- antimv(M,_),!.
hanoi(N,X,Z) :- N0 is N-1,
	      antimv(X,AX),
	      hanoi(N0,AX,Z0),
	      hanoi(1,X,MV),
	      hanoi(N0,AX,Z1),!,
	      append3(Z0,MV,Z1,Z).

append3(W,X,Y,Z) :- append(W,X,Z0), append(Z0,Y,Z).

ihanoi :- write('Number of Discs: '), read(X),
          write('Direction :'), read(D),
	  hanoi(X,D,M),
	  write(M).

eq0(X) :- X = 2.

eq1(X) :- X == 2.

eq2(X) :- not(X=2).

