Задача №115294. Морской бой

Рассмотрим классическую игру в «Морской бой».

Согласно правилам, у каждого игрока имеется поле размера \(10\times 10\) клеток, на котором он должен расставить \(10\) кораблей: один «четырехпалубник» (занимает \(1\times 4\) клетки), два «трехпалубника» (размера \(1\times 3\) клетки), три «двухпалубника» (размера \(1\times 2\) клетки) и четыре «однопалубника» (имеют размер \(1\times 1\)). При этом должны быть выполнены следующие условия:

  • на поле должны быть выставлены все корабли;
  • каждый корабль целиком помещается внутрь поля;
  • множество клеток, занимаемых каждым кораблем, образует прямоугольник соответствующего размера;
  • каждый корабль расположен либо вертикально, либо горизонтально;
  • любые две клетки, разных кораблей, не могут совпадать, а также касаться друг друга по стороне или углу.

Будем описывать расположение кораблей с помощью таблицы \(10 \times 10\), где в каждом элементе находится символ ' # ', если соответствующая клетка занята кораблем, и ' . ' в противном случае. Ваша задача — по заданному полю \(10\times 10\) определить, соответствует ли оно корректной расстановке кораблей, согласующейся с правилами «Морского боя».

Входные данные

Ввод состоит из \(10\) строк, разделенных переводом строки, по \(10\) символов в каждой — описание поля. Гарантируется, что каждый символ поля равен либо ' # ', либо ' . '.

Выходные данные

Выведите « YES », если описанное во входных данных поле соответствует корректной расстановке кораблей в игре «Морской бой», и « NO » иначе.

Примеры
Входные данные
#.#.#.....
.......##.
.#..#.....
.#........
.#..##....
..........
####...#..
.......#..
.......#..
##........
Выходные данные
YES
Входные данные
##..#.....
.......##.
.#..#....#
.#........
.#........
..........
####...#..
.......#..
.......#..
##.......#
Выходные данные
NO
Сдать: для сдачи задач необходимо войти в систему