#include #include #include #include #include #include #define repf(x,fr,to) for(int (x)=(fr);(x)<(to);(x)++) #define rep(x,to) for(int (x)=0;(x)<(to);(x)++) #define sz(v) (int)(v).size() using namespace std; int main() { int h,w; cin >> h>>w; vector s(h); rep(i,h) cin >> s[i]; vector gy, gx; rep(i,h) rep(j,w) if(s[i][j]=='#') gy.push_back(i), gx.push_back(j); if(sz(gy) <2 || sz(gy) %2 ){ puts("NO");exit(0);} repf(i,1,sz(gy)){ int dy=gy[i]-gy[0], dx=gx[i]-gx[0]; auto ump = s; rep(j, sz(gy)){ if(ump[gy[j]][gx[j]] !='#') continue; int ny= gy[j] + dy, nx = gx[j] + dx; if(ny<0 || ny>=h || nx<0 || nx>=w) goto lpend; if(ump[ny][nx] =='#') ump[gy[j]][gx[j]] = ump[ny][nx] = 'A'; } rep(i,h) rep(j,w) if(ump[i][j]=='#') goto lpend; puts("YES"); exit(0); lpend: ; } puts("NO"); return 0; }