#include using namespace std; #define fr first #define sc second #define pb push_back typedef long long ll; typedef pairpii; const int inf = 0x3f3f3f3f; const int mod = 1000000007; const double pi = acos(-1.0); const ll INF = 0x3f3f3f3f3f3f3f3f; #define rep(i,x,y) for(auto i=(x);i<=(y);++i) #define dep(i,x,y) for(auto i=(x);i>=(y);--i) const int dx[] = { -1,0,1,0 }, dy[] = { 0,1,0,-1 }; ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } ll poww(ll a, ll b) { ll s = 1; while (b) { if (b & 1)s = (s * a) % mod; a = (a * a) % mod; b >>= 1; }return s % mod; } /*----------------------------------------------------------------------------------------------------------------------*/ const int N = 1e6 + 11; ll n,m; char z[15][15]; bool vis[15][15]; bool v[15][15]; vectorve; void bfs() { memset(v,0,sizeof(v)); queueq; q.push({1,1}); while(q.size()) { auto i=q.front(); q.pop(); if(v[i.fr][i.sc]==1)continue; v[i.fr][i.sc]=1; if(i.fr==n&&i.sc==n) { m=2; return; } if(z[i.fr+1][i.sc]=='.'&&v[i.fr+1][i.sc]==0)q.push({i.fr+1,i.sc}); if(z[i.fr][i.sc+1]=='.'&&v[i.fr][i.sc+1]==0)q.push({i.fr,i.sc+1}); } } void dfs(int x,int y) { if(m==2)return; if(x==n&&y==n) { m=max(m,1LL); for(auto i:ve)z[i.fr][i.sc]='#'; bfs(); for(auto i:ve)z[i.fr][i.sc]='.'; return; } ve.pb({x,y}); vis[x][y]=1; if(z[x+1][y]=='.'&&vis[x+1][y]==0) { dfs(x+1,y); } if(z[x][y+1]=='.'&&vis[x][y+1]==0) { dfs(x,y+1); } ve.pop_back(); vis[x][y]=0; } void solve() { cin>>n;m=0; ve.clear(); rep(i,0,14)rep(j,0,14)z[i][j]='#'; rep(i,1,n)cin>>(z[i]+1); if(z[1][1]=='#'||z[n][n]=='#') { cout<<0<> T; while (T--)solve(); return 0; }