#include #include #include #include #include using namespace std; using ll = long long; using P = pair; bool reach(int n, vector& s){ vector ok(n, vector(n)); queue

bfs; bfs.emplace(0, 0); int di[4]={-1, 0, 1, 0}; int dj[4]={0, 1, 0, -1}; while(bfs.size()){ auto [i, j]=bfs.front(); bfs.pop(); if(ok[i][j]) continue; ok[i][j]=1; for(int k=0; k<4; k++){ int ni=i+di[k], nj=j+dj[k]; if(ni<0||nj<0||ni>=n||nj>=n) continue; if(s[ni][nj]=='#') continue; bfs.emplace(ni, nj); } } return ok[n-1][n-1]; } void exp(int n){ int mx=(1<<(n*n)); map, bool> goal; for(int i=1; i now(n, string(n, '.')); for(int j=0; j>p&1) now[j][k]='#'; } goal[now]=reach(n, now); } for(int i=1; i now(n, string(n, '.')); for(int j=0; j>p&1) now[j][k]='#'; } if(goal[now]) continue; bool alice_win=true; { for(int li=1; li> n; if(n==3){ cout << ".#." << '\n' << "#.." << '\n' << "..." << endl; return 0; } else if(n<=5) cout << -1 << endl; else cout << -1 << endl; return 0; }