func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline void umax(T &a, T b) {     if (a < b) a = b;   }   const int maxn = 4000 + 5;   const int INF = 1e9 + 7;   const double eps = 1e-8;   string a[10];   int dp[4][105];   int n, k;   int valid(int x, int y) {     if (x >= 0 && x < n && y >= 0 && y < 3) return true;     return false;   }   int rec(int posy, int posx) {     if (posy < 0 || posy >= 3) return 0;     if (posx >= n - 1) return 1;     if (dp[posy][posx] != -1) return dp[posy][posx];     int &ret = dp[posy][posx];     ret = 0;     if (posx >= n - 1) {       ret = 1;       return ret;     }     if (a[posy][posx + 1] !=  . ) {       ret = 0;       return ret;     }     for (int i = (-1); i < (2); i++) {       if (posy + i < 0 || posy + i >= 3) continue;       if (a[posy + i][posx + 1] !=  . ) continue;       if (a[posy + i][posx + 2] !=  . ) continue;       if (a[posy + i][posx + 3] !=  . ) continue;       ret |= rec(posy + i, posx + 3);     }     return ret;   }   inline void solve(void) {     int t;     cin >> t;     while (t--) {       memset(dp, -1, sizeof dp);       cin >> n >> k;       for (int i = (0); i < (3); i++) cin >> a[i];       for (int i = (0); i < (3); i++)         for (int j = (0); j < (7); j++) a[i].push_back( . );       int posy, posx;       for (int i = (0); i < (3); i++)         for (int j = (0); j < (n); j++)           if (a[i][j] ==  s ) posx = j, posy = i;       if (rec(posy, posx)) {         cout <<  YES n ;       } else         cout <<  NO n ;     }     return;   }   void init() {     ios::sync_with_stdio(false);     cin.tie(nullptr);   }   int main(int argc, const char *argv[]) {     init();     solve();     return 0;   }   