#include<bits/stdc++.h>
using namespace std;
int m,n,sx,sy,ex,ey;
int diry[5]={0,0,1,-1},dirx[5]{1,-1,0,0};
bool vis[110][110];
string a[110];
void dfs(int x,int y){
vis[x][y]=1;
if(x==ex&&y==ey){
return ;
}
for(int i=0;i<4;i++){
int xx=x+dirx[i],yy=y+diry[i];
if(xx<0||xx>=n||yy<0||yy>=n||a[xx][yy]=='#'||vis[xx][yy]){
continue;
}
dfs(xx,yy);
}
}
void solve(){
memset(vis,0,sizeof(vis));
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
}
int sx=1,sy=1,ex=n,ey=m;
if(a[sx][sy]=='#'||a[ex][ey]=='#'){
cout<<"No"<<endl;
return ;
}
dfs(sx,sy);
if(vis[ex][ey]){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
int main(){
solve();
return 0;
}