func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<vector<int>> statues(8);   vector<vector<char>> MAT(8, vector<char>(8));   vector<vector<vector<bool>>> VIS(8,                                    vector<vector<bool>>(8,                                                         vector<bool>(10, false)));   vector<pair<int, int>> moveDir = {{0, 1},  {0, -1}, {1, 0},   {-1, 0}, {1, 1},                                     {-1, 1}, {1, -1}, {-1, -1}, {0, 0}};   bool checkStatues(int r, int c, int level) {     for (int i = 0; i < statues[c].size(); ++i) {       if (statues[c][i] + level < 8 && statues[c][i] + level == r) return false;     }     return true;   }   bool isSafe(int r, int c, int level) {     if (level > 8) level = 8;     if (r < 0 || r >= 8 || c < 0 || c >= 8 || VIS[r][c][level]) return false;     return checkStatues(r, c, level);   }   bool dfs(int r, int c, int level) {     bool canMove = false;     if (level > 8) level = 8;     if (r == 0 && c == 7) return true;     for (int i = 0; i < 9; ++i) {       int newR = r + moveDir[i].first;       int newC = c + moveDir[i].second;       if (isSafe(newR, newC, level + 1) && checkStatues(newR, newC, level)) {         VIS[r][c][level] = true;         canMove = canMove || dfs(newR, newC, level + 1);       }     }     return canMove;   }   int main() {     for (int i = 0; i < 8; ++i) {       for (int j = 0; j < 8; ++j) {         cin >> MAT[i][j];         if (MAT[i][j] ==  S ) statues[j].push_back(i);       }     }     bool canWin = dfs(7, 0, 0);     cout << ((canWin) ?  WIN  :  LOSE ) <<   n ;   }   