#include <stdio.h>
#define FALSE 0
#define TRUE 1

enum {up, down, left, right};
char arr2[12][13];
char arr[12][13]={
 \"############\",
 \"#...#......#\",
 \"S.#.#.####.#\",
 \"###.#....#.#\",
 \"#....###.#.E\",
 \"####.#.#.#.#\",
 \"#..#.#.#.#.#\",
 \"##.#.#.#.#.#\",
 \"#........#.#\",
 \"######.###.#\",
 \"#......#...#\",
 \"############\"};

char pattern1[2][4]={
 \"###\",
 \"#.#\"
};
char pattern2[2][4]={
 \"#.#\",
 \"###\"
};
char pattern3[3][3]={
 \"##\",
 \"#.\",
 \"##\"
};
char pattern4[3][3]={
 \"##\",
 \".#\",
 \"##\"
};
int MatchPattern( void);

int main(void){

 
 int move[83];
 int matching=TRUE;
 int i,j;


 
 for(i=0; i<12; i++)
  for(j=0; j<13; j++)
   arr2[i][j]= arr[i][j];
 while(matching==TRUE)
  matching=MatchPattern();


   for(i=0; i<12; i++){
  for(j=0; j<13; j++)
   printf(\"%c\",arr[i][j]);
  printf(\"\\n\");
  }
   printf(\"\\n\");
  for(i=0; i<12; i++){
  for(j=0; j<13; j++)
   printf(\"%c\",arr2[i][j]);
  printf(\"\\n\");
  }
 return 0;
}

int MatchPattern(void){
 int i,j;
 int matching=FALSE;
 for(i=0; i<12; i++){
  for(j=0; j<13; j++){
   if(arr2[i][j]==\'#\'&& arr2[i][j+1]==\'#\'&& arr2[i][j+2]==\'#\'&&
    arr2[i+1][j]==\'#\'&& arr2[i+1][j+1]==\'.\' && arr2[i+1][j+2]==\'#\'){
    arr2[i+1][j+1]=\'#\';
    matching=TRUE;
   }
   if(arr2[i][j]==\'#\'&& arr2[i][j+1]==\'.\'&& arr2[i][j+2]==\'#\'&&
    arr2[i+1][j]==\'#\'&& arr2[i+1][j+1]==\'#\' && arr2[i+1][j+2]==\'#\'){
    arr2[i][j+1]=\'#\';
    matching=TRUE;
   }
   if(arr2[i][j]==\'#\'&& arr2[i][j+1]==\'#\'&&
    arr2[i+1][j]==\'#\'&& arr2[i+1][j+1]==\'.\'&&
    arr2[i+2][j]==\'#\'&& arr2[i+2][j+1]==\'#\'){
    arr2[i+1][j+1]=\'#\';
    matching=TRUE;
   }
   if(arr2[i][j]==\'#\'&& arr2[i][j+1]==\'#\'&&
    arr2[i+1][j]==\'.\'&& arr2[i+1][j+1]==\'#\'&&
    arr2[i+2][j]==\'#\'&& arr2[i+2][j+1]==\'#\'){
    arr[i+1][j]=\'#\';
    matching=TRUE;
   }
  }
 }
 return matching;
}


으으 노가다의 연속