using System; namespace yukicoder { class _179 { static void Main() { int[] hw = Array.ConvertAll(Console.ReadLine().Split(' ') , x => int.Parse(x)); int h = hw[0]; int w = hw[1]; bool[,] b = new bool[h, w]; for (int i = 0; i < h; i++) { string iw = Console.ReadLine(); for (int j = 0; j < w; j++) { char ij = iw[j]; b[i, j] = ij == '#'; } } int i0 = -1; int j0 = -1; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if(b[i,j]) { if (i0 == -1 && j0 == -1) { i0 = i; j0 = j; } else { int hd = i - i0; int wd = j - j0; if (isp(h, w, (bool[,])b.Clone(), hd, wd)) { Console.WriteLine("YES"); return; } } } } } Console.WriteLine("NO"); } static bool isp(int h, int w, bool[,] b, int hd, int wd) { for (int id = 0; id < h; id++) { for (int jd = 0; jd < w; jd++) { if (b[id, jd]) { if (id + hd < 0 || jd + wd < 0 || id + hd > h - 1 || jd + wd > w - 1) { return false; } if (b[id + hd, jd + wd]) { b[id + hd, jd + wd] = false; } else { return false; } } } } return true; } } }