#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { int h, w; cin >> h >> w; string str[h]; for (int i = 0; i < h; i++) { cin >> str[i]; } int cnt = 0; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { cnt += (str[i][j] == '#'); } } if (cnt%2 || cnt == 0) { std::cout << "NO" << std::endl; return 0; } bool ok = false; int x, y; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (str[i][j] == '#') { x = j; y = i; ok = true; } if (ok) break; } if (ok) break; } for (int i = -h; i < h; i++) { for (int j = -w; j < w; j++) { bool vis[h][w]; memset(vis, false, sizeof(vis)); int tcnt = 0; for (int k = 0; k < h; k++) { for (int l = 0; l < w; l++) { if (str[k][l] != '#' || vis[k][l]) { continue; } if (k+i >= 0 && l+j >= 0 && k+i < h && l+j < w && str[k+i][l+j] == '#' && !vis[k+i][l+j]) { tcnt++; vis[k][l] = true; vis[k+i][l+j] = true; } } } if (tcnt*2 == cnt) { std::cout << "YES" << std::endl; return 0; } } } std::cout << "NO" << std::endl; return 0; }