using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace YukiCoder { class Program { //------------------------------------------------------------------// static bool forXY(string S, int dY, int dX) { var va = S.Split().Select(a => a.ToCharArray()).ToArray(); for (int y = 0; y < yMax; y++) { if (y + dY >= yMax) break; for (int x = 0; x < xMax; x++) { if (x + dX < 0 || x + dX >= xMax) continue; if (va[y][x] != '#' && va[y + dY][x + dX] != '#') continue; if (va[y][x] == '#' && va[y + dY][x + dX] == '#') { va[y][x] = '.'; va[y + dY][x + dX] = '.'; continue; } return false; } } for (int y = 0; y < yMax; y++) { for (int x = 0; x < xMax; x++) { if (va[y][x] == '#') return false; } } return true; } //------------------------------------------------------------------// static bool forDxDy(string S) { for (int dy = 0; dy < yMax; dy++) { for (int dx = -xMax + 1; dx < xMax; dx++) { if (dy == 0 && dx == 0) continue; if (forXY(S, dy, dx)) return true; } } return false; } //------------------------------------------------------------------// static int yMax = 3; static int xMax = 3; static void Main(string[] args) { var va = Console.ReadLine().Trim().Split().Select(int.Parse).ToArray(); yMax = va[0]; xMax = va[1]; string[] ps = new string[yMax]; for (int i = 0; i < yMax; i++) { ps[i] = Console.ReadLine(); } string S = string.Join(" ", ps); if (forDxDy(S)) Console.WriteLine("YES"); else Console.WriteLine("NO"); Console.ReadLine(); } //------------------------------------------------------------------// } }