#n行m列的矩阵
n,m=map(int,input().strip().split())
a=[0]*n
for i in range(n):
a[i]=list(input().strip())
di=[[1,0],[-1,0],[0,1],[0,-1]]
vis=[[0]*m for i in range(n)]
flag=0
def dfs(x,y):
global flag
vis[x][y]=1
if x==n-1 and y==m-1:
flag=1
return
nx,ny=0,0
for i in range(4):
nx+=di[i][0]
ny+=di[i][1]
if 0<=nx<n and 0<=ny<m and vis[nx][ny]==0 and a[nx][ny]!='#':
vis[nx][ny]=1
dfs(nx,ny)
dfs(0,0)
if flag==0:
print('No')
else:
print("Yes")