Рисунок

Ограничение по времени: 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). Разрешается кистью выходить за границы рисунка.

Войдите, что бы отправлять решения