1 #include<bits/stdc++.h>
2 using namespace std;
3 int si,sj,n,dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};char msp[105][105];bool flag;
4 void dfs(int x,int y){
5 if(x<0||y<0||x>=n||y>=n||msp[x][y]=='#')return;
6 if(msp[x][y]=='B'){flag=true;return;}//找到'B',则直接返回
7 msp[x][y]='#';//将走过的点标记为'#',表示不能再走
8 for(int i=0;i<4;++i){
9 dfs(x+dir[i][0],y+dir[i][1]);
10 if(flag)return;//如果找到,则直接返回
11 }
12 }
13 int main(){
14 while(~scanf("%d",&n)){
15 for(int i=0;i<n;++i){
16 getchar();//吃掉回车符对字符读取的影响
17 for(int j=0;j<n;++j){
18 scanf("%c",&msp[i][j]);
19 if(msp[i][j]=='P'){si=i,sj=j;}//标记'P'的坐标
20 }
21 }
22 flag=false;dfs(si,sj);
23 if(flag)printf("Yes\n");
24 else printf("No\n");
25 }
26 return 0;
27 }