n, m = map(int, input().split()) grid = [input().strip() for _ in range(n)] count = 0 start = None for i in range(n): for j in range(m): if grid[i][j] == '.': count += 1 if start is None: start = (i, j) if count % 2 != 0 or count == 0: print("NO") else: visited = [[False]*m for _ in range(n)] from collections import deque q = deque() if start: q.append(start) visited[start[0]][start[1]] = True found = 0 dirs = [(-1,0), (1,0), (0,-1), (0,1)] while q: i, j = q.popleft() found += 1 for di, dj in dirs: ni, nj = i + di, j + dj if 0 <= ni < n and 0 <= nj < m and not visited[ni][nj] and grid[ni][nj] == '.': visited[ni][nj] = True q.append((ni, nj)) print("YES" if found == count else "NO")