#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=505;
int n,m,sx,sy,tx,ty;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
bool vis[N][N],flag;
struct Node{
int x,y;
};
void bfs(){
queue<int> q;
q.push({sx,sy});
while(!q.empty()){
if(q.front()=={tx,ty}){
flag=1;
return ;
}Node tmp=q.front();
for(int i=0;i<4;++i){
int xx=dx[i]+tmp.x;
int yy=dy[i]+tmp.y;
if(xx<1||xx>n||yy<1||yy>m||vis[xx][yy]) continue;
q.push({xx,yy});
vis[xx][yy]=1;
}
}return ;
}
signed main(){
char c;
cin>>n>>m;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cin>>c;
if(c=='s') sx=i,sy=j;
if(c=='g') tx=i,ty=j;
if(c=='#') vis[i][j]=1;
}
}bfs();
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}