func_code_string: #include <bits/stdc++.h>   typedef struct pair {     int x, y;   } pair;   int const N = 1e4 + 5;   int n = 8;   pair sMatrix[N], sac[N];   char matrix[N][N], mariaMove[10][10][100];   pair anna, maria;   int i, j, k, s, m, h, t;   int kontrol(int x, int y) {     int i, j;     for (i = 0; i < s; i++) {       if (sMatrix[i].x == x && sMatrix[i].y == y) return 0;     }     return 1;   }   void sDown(int add) {     int i;     for (i = 0; i < s; i++) {       sMatrix[i].x += add;     }   }   void wrtS() {     int i;     for (i = 0; i < s; i++) {       printf( %d-SS-%d , sMatrix[i].x, sMatrix[i].y), puts(  );     }   }   void dfs(int x, int y, int t) {     int i, j, k;     if (x == anna.x && y == anna.y) {       printf( WIN ), puts(  );       exit(0);     }     if (!(!mariaMove[x][y][t] && x >= 0 && x < n && y >= 0 && y < n) ||         !kontrol(x, y))       return;     sDown(1);     if (!kontrol(x, y)) {       sDown(-1);       return;     }     mariaMove[x][y][t] = 1;     for (i = -1, k = 0; i <= 1; i++) {       for (j = -1; j <= 1; j++, k++) {         dfs(x + i, y + j, k);       }     }     sDown(-1);   }   void clearMariaMove() {     int i, j, k;     for (i = 0; i < 10; i++) {       for (j = 0; j < 10; j++) {         for (k = 0; k < 100; k++) {           mariaMove[i][j][k] = 0;         }       }     }   }   void clear_sMatrix() {     int i;     for (i = 0; i < s; i++) {       sMatrix[i].x = sac[i].x;       sMatrix[i].y = sac[i].y;     }   }   int main() {     for (i = 0; i < n; i++) {       scanf( %s , matrix[i]);       for (j = 0; j < n; j++) {         if (matrix[i][j] ==  S ) {           sMatrix[s].x = i, sMatrix[s].y = j;           sac[s].x = i, sac[s].y = j;           s++;         }       }     }     maria.x = 7, maria.y = 0;     anna.x = 0, anna.y = 7;     for (i = -1; i <= 0; i++) {       for (j = 0; j <= 1; j++) {         dfs(maria.x + i, maria.y + j, 0);         clearMariaMove();         clear_sMatrix();       }     }     puts( LOSE );     return 0;   }   