#include using namespace std; int main(){ int H, W, cnt = 0; cin >> H >> W; vector A(H); for(auto &&s:A){ cin >> s; cnt += count(s.begin(), s.end(), '#'); } if(cnt == 0){ cout << "NO" << endl; return 0; } for(int my = 0; my < H; my++){ for(int mx = 0; mx < W; mx++){ if(my == 0 && mx == 0)continue; bool flag = true; vector> used(H, vector(W)); for(int y = 0; y < H; y++){ for(int x = 0; x < W; x++){ if(used[y][x])continue; if(A[y][x] != '#')continue; if(y + my >= H || x + mx >= W){ flag = false; continue; } used[y][x] = true; if(A[y + my][x + mx] == '#'){ used[y + my][x + mx] = true; }else{ flag = false; } } } if(flag){ cout << "YES" << '\n'; return 0; } } } for(auto &&s:A)reverse(s.begin(), s.end()); for(int my = 0; my < H; my++){ for(int mx = 0; mx < W; mx++){ if(my == 0 && mx == 0)continue; bool flag = true; vector> used(H, vector(W)); for(int y = 0; y < H; y++){ for(int x = 0; x < W; x++){ if(used[y][x])continue; if(A[y][x] != '#')continue; if(y + my >= H || x + mx >= W){ flag = false; continue; } used[y][x] = true; if(A[y + my][x + mx] == '#'){ used[y + my][x + mx] = true; }else{ flag = false; } } } if(flag){ cout << "YES" << '\n'; return 0; } } } cout << "NO" << '\n'; }