#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,sx,sy,pd;
char a[5001][5001];
ll dx[4]={0,0,-1,1};
ll dy[4]={-1,1,0,0};
void dfs(ll x,ll y)
{
if(pd)return;
if(x==0||y==0||x==3*n+1||y==3*m+1)
{
pd=1;
return;
}
for(ll i=0;i<4;i++)
{
ll nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<=3*n+1&&ny>=0&&ny<=3*m+1&&a[nx][ny]!='#')
{
a[nx][ny]='#';
dfs(nx,ny);
a[nx][ny]='.';
}
}
}
int main()
{
while(scanf("%lld%lld",&n,&m)!=EOF)
{
pd=0;
for(ll i=1;i<=n;i++)
{
for(ll j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]!='S')a[i+n][j]=a[i+n][j+m]=a[i][j+m]=a[i+2*n][j+2*m]=a[i+2*n][j]=a[i][j+2*m]=a[i+n][j+2*m]=a[i+2*n][j+m]=a[i][j];
else
{
a[i][j]='.';
a[i+n][j]=a[i+n][j+m]=a[i][j+m]=a[i+2*n][j+2*m]=a[i+2*n][j]=a[i][j+2*m]=a[i+n][j+2*m]=a[i+2*n][j+m]=a[i][j];
a[i+n][j+m]='S';
}
}
}
for(ll i=n+1;i<=2*n;i++)
{
for(ll j=m+1;j<=2*m;j++)
{
if(a[i][j]=='S')
{
sx=i;
sy=j;
}
}
}
dfs(sx,sy);
if(pd)cout<<"Yes";
else cout<<"No";
cout<<endl;
}
}