Вася после того, как сделает все уроки, развлекается следующей головоломкой. Он берёт белый клетчатый лист размером N × N клеток, выбирает из него некоторое непустое связное подмножество клеток и красит это подмножество в чёрный цвет. После того, как Вася вырезает из листа чёрный кусок, остаётся ровно один белый кусок. Затем Вася совмещает куски в первоначальный квадрат и кладёт на бесконечный плоский стол. Задача Васи — разделить куски, то есть удалить один из кусков на большое расстояние от другого, не отрывая ни один из кусков от поверхности стола. Например, на рисунке заданы квадраты 5 × 5. В первом случае куски можно разделить, во втором — нельзя.
Однажды к Васе в гости пришел Петя. Увидев, чем занимается Вася, Петя решил помочь лучшему другу и написать программу, которая определяет, можно ли разделить белую и чёрную части.
Исходные данные
В первой строке записано целое число N
(3 ≤ N ≤ 1000). В следующих N строках по N символов в каждой приведена раскраска листа. Символы 0 обозначают белую часть, а 1 — чёрную. Гарантируется, что оба куска связны по сторонам (например, два квадрата с общей вершиной, но без общей стороны, не считаются связным куском).
Результат
Выведите «Yes», если части можно разделить, и «No» в противном случае.
Примеры
исходные данные | результат |
---|
5
10001
10001
10001
11111
11111
| Yes
|
5
11011
11011
10001
11111
11111
| No
|
Автор задачи: Александр Торопов
Источник задачи: XIII командный чемпионат школьников Свердловской области по программированию (14 октября 2006 года)