#include<bits/stdc++.h>
using namespace std;
char maze[55][55];
int vis[55][55];
int n,m;
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int ans;
void dfs(int x,int y)
{
   //if(maze[x][y]=='.')return false;
   vis[x][y]=1;
   int flag=0;
   for(int i=0;i<4;i++)
   {
       int xx=d[i][0]+x;
       int yy=d[i][1]+y;
       if(maze[xx][yy]=='#'&&xx>=0&&yy>=0&&xx<n&&yy<m&&vis[xx][yy]==0)
        {
            dfs(xx,yy);
        }
   }
}
int main()
{
    cin>>n>>m;
        for(int i=0;i<n;i++)
        cin>>maze[i];
        for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            if(maze[i][j]=='#')
            {
                int flag=0;
                for(int i=0;i<4;i++)
                {
                    int c=0;
                    int a=d[i][0]+i;
                    int b=d[i][1]+j;
                    if(a>=0&&b>=0&&a<n&&b<m)
                    {
                        c++;
                        if(maze[a][b]=='.')
                        {
                            flag++;
                        }
                    }
                }
                if(c==flag)
                    {
                        cout<<"No"<<endl;
                        return 0;
                    }
            }
        }
        cout<<"Yes"<<endl;
    return 0;
}