def solve():

    H,W=map(int,input().split())

    s=[]

    s.append(['.'] * (W+2))

    for y in range(H):

        s.append(['.'] + list(input()) + ['.'])

    s.append(['.'] * (W+2))

    for y in range(1,H):

        for x in range(1,W):

            if s[y][x] == '#':

                if s[y-1][x] == '.' and \

                   s[y+1][x] == '.' and \

                   s[y][x-1] == '.' and \

                   s[y][x+1] == '.':

                   return 'No'

    return 'Yes'



print(solve())

def solve():

    H, W = list(map(int, input().split()))

    S = []

    for h in range(H):

        s = eval(input())

        S.append(s)



    for h in range(H):

        for w in range(W):

            if S[h][w] == '#':

                ok = False

                if h > 0 and S[h - 1][w] == '#':

                    ok = True

                if h < H - 1 and S[h + 1][w] == '#':

                    ok = True

                if w > 0 and S[h][w - 1] == '#':

                    ok = True

                if w < W - 1 and S[h][w + 1] == '#':

                    ok = True

                if not ok:

                    print('No')

                    return



    print('Yes')





if __name__ == "__main__":

    solve()

def solve():
    H, W = map(int, input().split())
    s = []
    s.append(["."] * (W + 2))
    for y in range(H):
        s.append(["."] + list(input()) + ["."])
    s.append(["."] * (W + 2))
    for y in range(1, H):
        for x in range(1, W):
            if s[y][x] == "#":
                if (
                    s[y - 1][x] == "."
                    and s[y + 1][x] == "."
                    and s[y][x - 1] == "."
                    and s[y][x + 1] == "."
                ):
                    return "No"
    return "Yes"


print(solve())

def solve():
    H, W = list(map(int, input().split()))
    S = []
    for h in range(H):
        s = eval(input())
        S.append(s)
    for h in range(H):
        for w in range(W):
            if S[h][w] == "#":
                ok = False
                if h > 0 and S[h - 1][w] == "#":
                    ok = True
                if h < H - 1 and S[h + 1][w] == "#":
                    ok = True
                if w > 0 and S[h][w - 1] == "#":
                    ok = True
                if w < W - 1 and S[h][w + 1] == "#":
                    ok = True
                if not ok:
                    print("No")
                    return
    print("Yes")


if __name__ == "__main__":
    solve()

-    H, W = map(int, input().split()) -    s = [] -    s.append(["."] * (W + 2)) -    for y in range(H): -        s.append(["."] + list(input()) + ["."]) -    s.append(["."] * (W + 2)) -    for y in range(1, H): -        for x in range(1, W): -            if s[y][x] == "#": -                if ( -                    s[y - 1][x] == "." -                    and s[y + 1][x] == "." -                    and s[y][x - 1] == "." -                    and s[y][x + 1] == "." -                ): -                    return "No" -    return "Yes" +    H, W = list(map(int, input().split())) +    S = [] +    for h in range(H): +        s = eval(input()) +        S.append(s) +    for h in range(H): +        for w in range(W): +            if S[h][w] == "#": +                ok = False +                if h > 0 and S[h - 1][w] == "#": +                    ok = True +                if h < H - 1 and S[h + 1][w] == "#": +                    ok = True +                if w > 0 and S[h][w - 1] == "#": +                    ok = True +                if w < W - 1 and S[h][w + 1] == "#": +                    ok = True +                if not ok: +                    print("No") +                    return +    print("Yes") -print(solve()) +if __name__ == "__main__": +    solve()