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


/* UTILISATION :   
   - Pour compiler : javac Laby2.java
   - Pour lancer le programme avec les fichiers de test fourni : 
       java Laby2 <maze_C1-testN.view, en remplaçant N par le n° du fichier de test. Les fichiers disponibles sont
  
      maze_C2-test1.view : labyrinthe de l'énoncé : 9 lignes 13 colonnes,
      maze_C2-test2.view : labyrinthe de 21 lignes 17 colonnes,
      maze_C2-test3.view : labyrinthe de 61 lignes 101 colonnes
      maze_C2-test4.view : labyrinthe de 201 lignes 301 colonnes
      maze_C2-test5.view : labyrinthe de 401 lignes 501 colonnes
      maze_C2-test6.view : labyrinthe de 801 lignes 1001 colonnes
      maze_C2-test7.view : labyrinthe de 3001 lignes 2001 colonnes
*/

/* 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 converti.  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 readMap(BufferedReader stdIn) throws IOException,NumberFormatException {

    /* à compléter :

       - lecture de height lignes de texte sur le flux stdIn
       - pour chaque ligne i, affecter la valeur (en byte) du j-ème caractère à la case maze[i][j]
    */
  }

  public int[] findOut() {
    int[] out = new int[2];
    out[0] = -1;
    out[1] = -1;
    int i;
    /* à compléter :

       - chercher la case de sortie (unique) sur les murs nord,sud,est,ouest
       - affecter la ligne de cette case à out[0] et la colonne à out[1]
    */    
    return out;
  }
} 

class Laby2 {
  public static void main(String[] args) {
    BufferedReader stdIn = null;
    String line;
    Maze mazeOrig = null;
    int height;
    int width;
    int startRow,startCol;
    int rowDest,colDest;
    try {
      stdIn = new BufferedReader(new InputStreamReader(System.in));

      /* à compléter :
	 - lire une ligne sur stdIn pour récupérer la position de départ dans startRow,startCol
	 - lire une ligne sur stdIn pour récupérer la hauteur, largeur du labyrinthe dans line
	 - instancier mazeOrig
	 - lire sur stdIn le contenu du labyrinthe
	 - trouver la sortie et l'affecter à rowDest,colDest
	 - trouver un des chemins possibles (plus il est court, mieux c'est) entre le point de départ et la sortie
	 - afficher la longueur de ce chemin
	 - afficher la liste des coordonnées des cases du chemin, une par ligne au format row,col
       */
      
    }
    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);	           
    }
  }
}
