Jaemin разработал приложение с игрой-головоломкой.
В одной из клеток сетки находится шарик. Его можно катить вверх, вниз, влево или вправо. Шарик катится в выбранном направлении, пока не столкнётся со стеной или границей. В некоторых клетках есть звёзды; игрок получает звезду, когда шарик останавливается в её клетке или проходит через неё. Цель игры — собрать все звёзды в сетке.
В этом приложении есть редактор уровней, позволяющий игрокам создавать собственные уровни и делиться ими. Однажды кто-то предложил: «Пожалуйста, добавь функцию, которая проверяет, можно ли пройти мой уровень!» Легче сказать, чем сделать, правда?
Входные данные
Первая строка входных данных содержит два целых числа $H$ (высота) и $W$ (ширина). ($1 \leq H, W \leq 50$) Каждая из следующих $H$ строк содержит строку длины $W$, описывающую один ряд сетки. «#» обозначает стену, «.» — пустую клетку, «O» — шарик, а «*» — звезду. В сетке находится ровно один шарик и хотя бы одна звезда.
Выходные данные
Выведите «YES», если можно собрать все звёзды, и «NO» в противном случае.
Примеры
Входные данные 1
3 7 #..O..# #.###.# *..#..*
Выходные данные 1
NO
Входные данные 2
6 6 *..*## ..O... *..*#. ####*. ...... .....#
Выходные данные 2
YES