#include<bits/stdc++.h>
using namespace std;
int dx[5] = {0,0,0,-1,1};
int dy[5] = {0,1,-1,0,0};
const int N=100+10;
int n,m;
int b[N][N];
char a[N][N];
int ans=0;
bool ok(int i,int j){
return 1<=i and i<=n and 1<=j and j<=m and a[i][j]!='#';
}
void dfs(int x,int y){
if (x==n and y==m){
ans++;
return ;
}
for (int i=1;i<=4;i++){
int x2=x+dx[i],y2=y+dy[i];
if (ok(x2,y2) and b[x2][y2]!=1){
b[x2][y2]=1;
dfs(x2,y2);
b[x2][y2]=0;
}
}
}
int main(){
cin>>n >> m;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>a[i][j];
}
}
b[1][1]=1;
dfs(1,1);
if (ans == 0) cout << "No";
else cout << "Yes";
return 0;
}