//CF1059B
#include <cstdio>
const int maxn=1005;
char a[maxn][maxn];
int n,m;
int dx[8]={0,0,0,1,1,2,2,2},dy[8]={0,1,2,0,2,0,1,2};
inline void turn(int x,int y){
if(x>n-3||y>m-3) return;
for(int i=0; i<8; ++i) a[x+dx[i]][y+dy[i]]='.';
return;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0; i<n; ++i)
scanf("%s",a[i]);
for(int i=0; i<n-2; ++i)
for(int j=0; j<m-2; ++j)
turn(i,j);
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
if(a[i][j]=='#'){
printf("NO");
return 0;
}
printf("YES");
return 0;
}