import sys from collections import deque def main(): input = sys.stdin.read().split() n = int(input[0]) m = int(input[1]) grid = input[2:] 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: print("NO") return if start is None: print("NO") return visited = [[False for _ in range(m)] for __ in range(n)] q = deque() q.append(start) visited[start[0]][start[1]] = True found = 1 dirs = [(-1,0), (1,0), (0,-1), (0,1)] while q: i, j = q.popleft() for di, dj in dirs: ni, nj = i + di, j + dj if 0 <= ni < n and 0 <= nj < m: if grid[ni][nj] == '.' and not visited[ni][nj]: visited[ni][nj] = True found += 1 q.append((ni, nj)) if found == count: print("YES") else: print("NO") if __name__ == "__main__": main()