#include <iostream> using namespace std; #include<vector> bool valid = false; void dfs(vector<vector<char>>& grid,vector<vector<bool>>& visited,int i,int j,int row,int col){ if(grid[i][j] == '#' || visited[i][j]) return; if(i == row-1 && j == col-1 && grid[i][j] == '.'){ valid = true; return; } visited[i][j] = true; vector<pair<int,int>> directions = {{-1,0},{1,0},{0,-1},{0,1}}; for(auto dir:directions){ if(i+dir.first >= 0 && i+dir.first < row && j+dir.second >= 0 && j+dir.second < col && grid[i+dir.first][j+dir.second] == '.'){ dfs(grid,visited,i+dir.first,j+dir.second,row,col); } } } int main() { int row,col; cin >> row >> col; vector<vector<char>> grid(row,vector<char>(col)); for(int i=0;i<row;i++) for(int j=0;j<col;j++) cin >> grid[i][j]; vector<vector<bool>> visited(row,vector<bool>(col,false)); dfs(grid,visited,0,0,row,col); if(valid) cout << "Yes" << endl; else cout << "No" << endl; }