using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text.RegularExpressions;
using System.Diagnostics;
using static System.Math;

//var input = Console.ReadLine().Split().Select(int.Parse).ToArray();
namespace AtCoderSolve
{

    class Solve
    {
        const int mod = 1000000007;
        const int INF = 2147483647;
        const long SINF = 9223372036854775807;

        static int H, W;
        static string[] S;

        public static void Input()
        {
            var cin = new Solve();
            var input = cin.SplitReader();
            H = input[0];
            W = input[1];
            S = new string[H];
            for (var i = 0; i < H; i++)
            {
                S[i] = Console.ReadLine();
            }
        }

        static void Main(string[] args)
        {
            Input();
            //var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            //Console.SetOut(sw);
            

            string ans = "Yes";
            for(var i = 0; i < H; i++)
            {
                for(var j = 0; j < W; j++)
                {
                    if (S[i][j] == '.') { continue; }
                    ans = "No";
                    if ((i > 0 && S[i - 1][j] == '#') || (i < H - 1 && S[i + 1][j] == '#') || (j > 0 && S[i][j - 1] == '#') || (j < W - 1 && S[i][j + 1] == '#'))
                    {
                        ans = "Yes";
                    }
                    else { break; }
                    
                }
            }
            Console.WriteLine(ans);
            
            
            //Console.Out.Flush();
        }

        public int[] SplitReader()
        {
            int[] array = Console.ReadLine().Split().Select(int.Parse).ToArray();
            return array;
        }
        public long[] SplitReaderL()
        {
            long[] array = Console.ReadLine().Split().Select(long.Parse).ToArray();
            return array;
        }

    }
}

    

