#include <iostream>
#include <vector>
using namespace std;


int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};

void dfs(const vector<vector<char>>& mmap, vector<vector<bool>>& visited, int x,
         int y) {
    if (mmap[x][y] == '#' || visited[x][y]) return; // 退出条件
    visited[x][y] = true;

    for (int i = 0; i < 4; i++) {
        int nextx = x + dir[i][0];
        int nexty = y + dir[i][1];

        if (nextx < 0 || nextx >= visited.size() || nexty < 0 || nexty >= visited[0].size()) continue;
        dfs(mmap, visited, nextx, nexty);
    }

}
int main() {
    int a, b;
    cin >> a >> b;
    vector<vector<char>> mmap(a, vector<char>(b, '.'));
    char sig;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            cin >> sig;
            mmap[i][j] = sig;
        }
    }

    vector<vector<bool>> visited(a, vector<bool>(b, false));
    dfs(mmap, visited, 0, 0);

    if (visited[a - 1][b - 1]) cout << "Yes" << endl;
    else cout << "No" << endl;

}

DFS