#include <bits/stdc++.h>
using namespace std;
void dfs(int x, int y, int h, int w, vector<vector<bool>> &isR, vector<string> &s) {
// 範囲外アクセスしないように迷路の外だったら即return
if (0 > x || x >= w || 0 > y || y >= h) return;
// そのマスが探索済みまたは壁であってもreturn
if (isR[y][x] || s[y][x] == '#') return;
// このマスを探索済みにする
isR[y][x] = true;
// 4方向を見る
dfs(x + 1, y, h, w, isR, s);
dfs(x - 1, y, h, w, isR, s);
dfs(x, y + 1, h, w, isR, s);
dfs(x, y - 1, h, w, isR, s);
return;
}
int main() {
int h, w;
cin >> h >> w;
vector<string> s(h);
for (int i = 0; i < h; i++) {
cin >> s[i];
}
vector<vector<bool>> isR(h, vector<bool>(w, false));
dfs(0, 0, h, w, isR, s);
if (isR[h - 1][w - 1]) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}