#include<bits/stdc++.h>
using namespace std;
int n,m,vs[550][550];
char maps[550][550];
int f[4]={0,1,0,-1},l[4]={1,0,-1,0};
int xs,ys,xe,ye;
inline int read()
{
register int x = 0, t = 1;
register char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
t=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*t;
}
int dfs(int x,int y)
{
if(x==xe&&y==ye)
{
cout<<"Yes"<<endl;
exit(0);
}
for(int i=0;i<4;i++)
{
int xx=x+f[i];
int yy=y+l[i];
if(xx<=n&&yy<=m&&xx>0&&yy>0&&!vs[xx][yy]&&maps[xx][yy]!='#')
{
vs[xx][yy]=1;
dfs(xx,yy);
}
}
}
int main()
{
n=read();
m=read();
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf(" %c",&maps[i][j]);
if(maps[i][j]=='s')
{
xs=i;ys=j;
}
if(maps[i][j]=='g')
{
xe=i;ye=j;
}
}
}
vs[xs][ys]=1;
if(dfs(xs,ys)==1)
{
printf("Yes\n");
}
else printf("No\n");
return 0;
}