func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   #pragma GCC target( avx,avx2,fma )   #pragma GCC optimization( unroll-loops )   using namespace std;   const long long MAX = 1000004;   const long long INF = 1e18L + 5;   template <class T, class U>   void chmin(T &t, const U &u) {     if (t > u) t = u;   }   template <class T, class U>   void chmax(T &t, const U &u) {     if (t < u) t = u;   }   template <typename Head, typename... Tail>   void debug_out(Head H, Tail... T) {     cerr <<     << H;     debug_out(T...);   }   template <typename Arg1>   void pn(Arg1 &&arg1) {     cout << arg1 <<   n ;   }   template <typename Arg1, typename... Args>   void pn(Arg1 &&arg1, Args &&...args) {     cout << arg1 <<   n ;     pn(args...);   }   template <typename Arg1>   void ps(Arg1 &&arg1) {     cout << arg1 <<    ;   }   template <typename Arg1, typename... Args>   void ps(Arg1 &&arg1, Args &&...args) {     cout << arg1 <<    ;     ps(args...);   }   template <typename Arg1>   void read(Arg1 &&arg1) {     cin >> arg1;   }   template <typename Arg1, typename... Args>   void read(Arg1 &&arg1, Args &&...args) {     cin >> arg1;     read(args...);   }   long long n, m;   char mat[51][51];   long long dx[] = {1, 0, -1, 0};   long long dy[] = {0, 1, 0, -1};   bool valid(long long x, long long y) {     if (x >= 0 && y >= 0 && x < n && y < m) return true;     return false;   }   vector<vector<long long>> vis(51, vector<long long>(51, 0));   void dfs(long long x, long long y) {     if (mat[x][y] ==  # ) return;     if (mat[x][y] ==  G ) {       mat[x][y] =  . ;     }     if (mat[x][y] ==  B ) {       return;     }     vis[x][y] = 1;     for (long long i = 0; i < 4; ++i) {       long long tx = x + dx[i];       long long ty = y + dy[i];       if (valid(tx, ty)) {         if (!vis[tx][ty]) dfs(tx, ty);       }     }   }   void solve() {     read(n, m);     bool pos = true;     for (long long i = 0; i < n; ++i)       for (long long j = 0; j < m; ++j) read(mat[i][j]);     for (long long i = 0; i < n; ++i) {       for (long long j = 0; j < m; ++j) {         if (mat[i][j] ==  B ) {           for (long long k = 0; k < 4; ++k) {             long long tx = i + dx[k];             long long ty = j + dy[k];             if (valid(tx, ty)) {               if (mat[tx][ty] ==  G ) {                 pos = false;               } else {                 if (mat[tx][ty] !=  B ) mat[tx][ty] =  # ;               }             }           }         }       }     }     if (pos) {       for (long long i = 0; i < n; ++i) {         for (long long j = 0; j < m; ++j) {           if (mat[i][j] ==  G ) {             for (long long k = 0; k < n; ++k)               for (long long l = 0; l < m; ++l) vis[k][l] = 0;             dfs(i, j);             if (vis[n - 1][m - 1] == 0) {               pos = false;             }           }         }       }       pn(pos ?  Yes  :  No );     } else       pn( No );   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     long long tc = 1;     cin >> tc;     while (tc--) {       solve();     }   }   