func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 0x3f3f3f3f;   const long long INFF = 1e18;   const double pi = acos(-1.0);   const double inf = 1e18;   const double eps = 1e-9;   const long long mod = 1e9 + 7;   const int maxmat = 10;   const unsigned long long BASE = 133333331;   inline void RI(int &x) {     char c;     while ((c = getchar()) <  0  || c >  9 )       ;     x = c -  0 ;     while ((c = getchar()) >=  0  && c <=  9 ) x = (x << 3) + (x << 1) + c -  0 ;   }   const int dy[3] = {-1, 0, 1};   char maze[3][105];   bool vis[3][105][105];   int sx, sy;   int N, k;   struct Node {     int x, y, t;   };   bool valid(int x, int y, int t) {     return (x >= 0 && x < 3 && y >= 0 && y < N &&             (maze[x][y + 2 * t] ==  .  || maze[x][y + 2 * t] == 0));   }   bool bfs(int x, int y) {     queue<Node> q;     q.push((Node){x, y, 0});     while (!q.empty()) {       Node tmp = q.front();       q.pop();       if (tmp.y == N - 1) return true;       if (maze[tmp.x][tmp.y + 1 + 2 * tmp.t] >=  A  &&           maze[tmp.x][tmp.y + 1 + 2 * tmp.t] <=  Z )         continue;       for (int k = 0; k < 3; k++) {         int tmpx = tmp.x + dy[k];         int tmpy = tmp.y + 1;         if (valid(tmpx, tmpy, tmp.t) && valid(tmpx, tmpy, tmp.t + 1) &&             !vis[tmpx][tmpy][tmp.t + 1]) {           vis[tmpx][tmpy][tmp.t + 1] = true;           q.push((Node){tmpx, tmpy, tmp.t + 1});         }       }     }     return false;   }   int main(int argc, char const *argv[]) {     int T;     cin >> T;     while (T--) {       scanf( %d%d , &N, &k);       memset(maze, 0, sizeof(maze));       memset(vis, false, sizeof(vis));       for (int i = 0; i < 3; i++) {         char s[105];         scanf( %s , s);         for (int j = 0; j < N; j++) {           maze[i][j] = s[j];           if (maze[i][j] ==  s ) sx = i, sy = j;         }       }       cout << (bfs(sx, sy) ?  YES  :  NO ) << endl;     }     return 0;   }   