#include<bits/stdc++.h>
using namespace std;
char Cmap[51][51];
bool Bmap[51][51];
int n,sx,sy,G[4][2]={{0,-1},{0,1},{-1,0},{1,0}};
struct node{
int x,y;
};
string find(int x,int y){
queue<node> q;
q.push({x,y});
Bmap[x][y]=false;
while(!q.empty()){
int X=q.front().x,Y=q.front().y;
q.pop();
if(Cmap[X][Y]=='E'){
return "Yes";
}
for(int i=0;i<4;i++){
int xx=X+G[i][0],yy=Y+G[i][1];
if(xx>=0&&yy>=0&&xx<n&&yy<n&&Cmap[xx][yy]!='#'&&Bmap[xx][yy]){
q.push({xx,yy});
Bmap[xx][yy]=false;
}
}
}
return "No";
}
int main(){
cin>>n;
memset(Bmap,true,sizeof(Bmap));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>Cmap[i][j];
if(Cmap[i][j]=='@'){
sx=i;
sy=j;
}
}
}
cout<<find(sx,sy);
}