# REになった
# 各ルートの4方向で行ってないところを覚えるのではなく、すでに行ったマスのみをマークするようにする
# line input as int generator
def li():
    return map(int, input().split())


H, W = li()
# C = [input().split() for _ in range(H)]
C = [['' for _ in range(W)] for _ in range(H)]
# すでに行った道など、もう通らない道
route = []
for h in range(H):
    for w, c in enumerate(input()):
        C[h][w] = c
        if c == '#':
            route.append((h,w))
        # if h-1 >= 0:
        #     route[(h, w)].append((h - 1, w))
        # if h+1 < H:
        #     route[(h, w)].append((h + 1, w))
        # if w-1 >= 0:
        #     route[(h, w)].append((h, w - 1))
        # if w+1 < W:
        #     route[(h, w)].append((h, w + 1))
        if c == 's':
            start = (h, w)
# print(route)

def dfs(now):
    h, w = now
    # print(now)
    # if not ((0 <= h < H) and (0 <= w < W)):
    #     return False
    # print(route[now])
    if (h,w) in route:
        return False
    if C[h][w] == 'g':
        # OK!
        return True
    # elif C[h][w] == '#':
    #     return False
    else:
        # append
        route.append((h,w))
        if h-1 >= 0 and ((h-1,w) not in route):
            if dfs((h-1,w)):
                return True
        if h+1 < H and ((h+1,w) not in route):
            if dfs((h+1,w)):
                return True
        if w-1 >= 0 and ((h,w-1) not in route):
            if dfs((h,w-1)):
                return True
        if w+1 < W and ((h,w+1) not in route):
            if dfs((h,w+1)):
                return True
        return False

print('Yes' if dfs(start) else 'No')