#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;
}