Ограничение по времени: 1.000 секунд
Ограничение по памяти: 500.000 мегабайт
Художник Владимир, наблюдая за морозными рисунками на окне, совершенно забыл, что ему завтра нужно сдавать проект.
Второпях Владимир нашёл какой-то компьютер, на котором он решил воссоздать набросок, который у нашего художника был в голове с точностью до пикселя. Вот только графический редактор, которым он решил воспользоваться, был крайне ограничен.
В этом графическом редакторе есть только две кисти — одна в форме крестика, другая в виде нолика. Можно выбрать какую-то клетку (x, y) (1 ≤ x ≤ n; 1 ≤ y ≤ m) и одну из двух кистей. Тогда если была выбрана кисть-нолик, то будут покрашены в красный все клетки, у которых есть общая сторона с выбранной клеткой. Если же выбран крестик, то красными станут выбранная клетка и все, соседние с ней по углу.
*.*......*.
.*......*.*
*.*......*.
Вам даётся набросок размера n× m. Определите, может ли Владимир воссоздать его, используя только эти две кисти. Разрешается частью кисти выходить за границу рисунка.
В первой строке ввода через пробел даны два целых числа n и m — размеры рисунка (1 ≤ n, m ≤ 1000).
В следующих n строках вводится по m символов — символ равен *
, если пиксель покрашен в красный, и .
, если пиксель покрашен в белый.
Выведите ответ на задачу — YES
, если можно воссоздать рисунок, и NO
в противном случае.
input | output |
---|---|
5 5 ..... ..*** ..*** ..*** ..... |
YES |
5 5 ..... ..... *.... .*... *.*.. |
YES |
В первом тесте можем сделать два «мазка» в клетке (3; 4) — один крестик, другой нолик.
Во втором тесте достаточно поставить нолик в клетке (4; 1) и в клетке (5; 2). Разрешается кистью выходить за границы рисунка.