import java.io.*;

public class PG6 {

 public static void main (String[] args) throws Exception {

  TicTacToeBoard TB = new TicTacToeBoard ();
  TicTacToePosition TP = new TicTacToePosition ();
  TP.setb ("XOBBBBBBB".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("BBBBBBBBB".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("OXXBBXBBO".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("XXBBBBBOO".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("BBBXBBBBB".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("BBOXBBBBB".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
  TP.setb ("BBOXXBBBB".toCharArray());
  TB.loadInitialPosition (TP);
  pprint (TB.solve ());
 }

 private static void pprint (Position[] P) throws Exception {

  char v = ((TicTacToePosition)P[P.length-1]).Victor();
  switch (v) {
   case 'X': System.out.println ("X wins the game."); break;
   case 'O': System.out.println ("O wins the game."); break;
   case 'C': System.out.println ("The game goes to the cat."); break;
  }
  System.out.println ();
  for (int i=0; i < P.length; i++) {
   TicTacToePosition tp = (TicTacToePosition) P[i];
   char[] b = tp.getb();
   for (int j=0; j < 9; j++) if (b[j]=='B') b[j]=' ';
   System.out.println (b[0]+"|"+b[1]+"|"+b[2]);
   System.out.println ("-----");
   System.out.println (b[3]+"|"+b[4]+"|"+b[5]);
   System.out.println ("-----");
   System.out.println (b[6]+"|"+b[7]+"|"+b[8]);
   System.out.println ();
  }
  for (int i=0; i < 72; i++) System.out.print ("-");
  System.out.println ();
  System.out.println ();
 }
}
