import choco.Problem;
import choco.ContradictionException;
import choco.integer.*;
import choco.Constraint;
import choco.Solver;
import choco.Solution;

public class Cases2 {

  
  public static void main(String[] args) throws ContradictionException {

     int h = 0;

     for(int i=0;i<3;i++)
	 for (int j=0;j<3;j++)
	     for(int k=0;k<3;k++){
		 System.out.println("Case " + h + " (" + i + "," + j + "," + k + ")");
		 Problem pb = new Problem();
		 IntDomainVar x = pb.makeEnumIntVar("x",0,2);
		 IntDomainVar y = pb.makeEnumIntVar("y",0,2);
		 IntDomainVar z = pb.makeEnumIntVar("z",0,2);
		 IntDomainVar d = pb.makeEnumIntVar("d",0,1);
		 Constraint Cxy, Cxz, Cyz;
		 if (i==0) Cxy = pb.gt(x,y);
		 else if (i==1) Cxy = pb.eq(x,y);
		 else Cxy = pb.lt(x,y);

		 if (j==0) Cxz = pb.gt(x,z);
		 else if (j==1) Cxz = pb.eq(x,z);
		 else Cxz = pb.lt(x,z);

		 if (k==0) Cyz = pb.gt(y,z);
		 else if (k==1) Cyz = pb.eq(y,z);
		 else Cyz = pb.lt(y,z);

		 Constraint C1 = pb.and(Cxy,Cxz,Cyz);
		 Constraint C2 = pb.eq(d,0);
		 Constraint C3 = pb.ifOnlyIf(C1,C2);
		 pb.post(C3);
		 pb.minimize(d,false);
		 System.out.println(pb.pretty());
		 
		 h++;
	     }
  }
}
