import java.io.*;
import java.util.*;

/* UTILISATION :
   - Pour compiler : javac Laby1.java
   - Pour lancer le programme avec les fichiers de test fourni : 
       java Laby1 <maze_C1-testN.csv >result-testN.view, en remplaçant N par le n° du fichier de test. Les fichiers disponibles sont

      maze_C1-test1.csv : labyrinthe de l'énoncé : 4 lignes 6 colonnes,
      maze_C1-test2.csv : labyrinthe de 10 lignes 8 colonnes,
      maze_C1-test3.csv : labyrinthe de 30 lignes 50 colonnes

   - Ensuite vous pouvez comparer chaque résultat avec l'attendu :
      diff maze_C1-testN.view result-testN.view

    Si la commande n'affiche aucune différence, votre programme fonctionne à priori correctement et vous
    pouvez le soumettre.          

*/

/* ATTENTION :
   Lors de la soumission, le programme va être compilé et exécuté sur le serveur jury, donc pas comme si vous 
   le lanciez en local. Sur le serveur, ce programme va recevoir sur l'entrée standard le labyrinthe à lire et
   va devoir écrire sur la sortie standard (donc avec des System.out.println) le labyrinthe une fois convertit.
   Par conséquent, si vous laissez d'autres System.out.println() (par ex, ceux qui vous servent à déboguer), ils seront
   pris comme une partie du résultat par le serveur, ce qui bien entendu, vous fera échouer au test.
   N'oulbiez donc pas de les mettre en commentaire avant la soumission !
*/
class Maze {

    int height;
    int width;
    byte[][] maze;

    public Maze(int height, int width) {
	this.height = height;
	this.width = width;
	maze = new byte[height][width];
    }

    public void readCSV(BufferedReader stdIn) throws IOException,NumberFormatException {

	/* à compléter :

	   - lecture de height lignes de texte sur le flux stdIn
	   - pour chaque ligne i, la découper avec la virgule comme séparateur, 
	   - affecter la valeur (en byte) du champ j de la ligne i à la case maze[i][j]
	*/
    }

    /* print() : à n'utiliser que sur un labyrinthe avec des murs, donc
       avec le tableau maze, contenant soit des espaces, soit des #
    */
    public void print() {
	int i,j;

	/* à compléter :
	   - pour toutes les lignes i,
	   - pour toutes les colonnes j :
	   - afficher le contenu de maze[i][j] -> résultat = un espace ou bien un #
	   - afficher un retour à la ligne
	*/
    }

    /* initialize() : met value dans chaque case du labyrinthe */
    public void initialize(byte value) {

	/* à compléter */
    }
  
    public Maze addWalls() {

	/* à compléter :
	   - création d'une nouvelle instance de Maze, avec une taille tenant compte de murs
	   - initialisation de cet objet avec des caractères espace (' ')
	   - remplissage de l'objet avec des caractères mur ('#') aux bons endroits
	   - renvoyer le nouvel objet
	*/
    }  
}

class Laby1 {
    
    public static void main(String[] args) {

	Locale.setDefault(Locale.ENGLISH);
	BufferedReader stdIn = null;
	String line;
	Maze mazeOrig = null;
	Maze mazeTrans = null;
	int height;
	int width;
	try {
      
	    stdIn = new BufferedReader(new InputStreamReader(System.in));
      
	    line = stdIn.readLine();
	    if ((line == null) || (line.equals(""))) {
		System.err.println("cannot read maze dimensions");
		System.exit(1);	
	    }

	    /* à compléter :
	       - récupérer la hauteur, largeur du labyrinthe dans line
	       - instancier mazeOrig
	       - lire sur stdIn le contenu du labyrinthe
	       - obtenir mazeTrans en ajoutant des murs à mazeOrig
	       - afficher hauteur,largeur de mazeTrans
	       - afficher mazeTrans
	    */
	}
	catch(IOException e) {
	    System.err.println("cannot read maze");
	    System.exit(1);	     
	}
	catch(NumberFormatException e) {
	    System.err.println("cannot read maze : invalid data");
	    System.exit(1);	           
	}
    }
}
