#include<bits/stdc++.h>
using namespace std;
///左上右下四个方向
int dx[] = {-1,0,1,0};
int dy[] = {0,-1,0,1};
char mp[501][501];///地图
int vis[501][501];///标记是否走过
int n,m;///地图大小
int flag = 0;
void dfs(int x,int y)
{
vis[x][y] = 1;///将该点标记走过
mp[x][y] = '#';
for(int i=0;i<4;i++){
int mx = dx[i] + x;///x坐标变化
int my = dy[i] + y;///y坐标变化
if(mx<0||mx>=n)continue;///是否走出地图
if(my<0||my>=m)continue;
if(mp[mx][my]=='#'||vis[mx][my]==1)continue;///是否走过,是否能走
vis[mx][my] = 1;///标记走过
if(mp[mx][my]=='E'){cout<<"Yes"<<endl;flag = 1;}///是否能到达终点
dfs(mx,my);
}
}
int main()
{
int x,y;
while(cin>>n>>m){
memset(vis,0,sizeof(vis));///标记清零
flag = 0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>mp[i][j];///输入
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(mp[i][j]=='S'){
x = i;
y = j;///起始位置
break;
}
dfs(x,y);
if(flag !=1)cout<<"No"<<endl;
}
return 0;
}