Головоломка

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

Пете на день рождения подарили новую головоломку. Головоломка представляет собой цилиндр, состоящий из nn круглых слоев, нанизанных на одну вертикальную ось. Каждый слой можно вращать независимо от других. Каждый слой разбит на nn квадратиков, каждый из которых может быть либо черным, либо белым. В устойчивом состоянии квадратики соседних слоев находятся в точности друг под другом.

Для задания конфигурации головоломки удобно рассмотреть ее развертку --- <<разрезать>> поверхность цилиндра вдоль вертикальной линии, проходящей по границам квадратиков, и обозначить черные клетки символом <<0>>, а белые --- символом <<1>>. Пусть, например, одна из возможных разверток головоломки, приведенной на рисунке, следующая (на рисунке видно только первые три столбца этой развертки):

000110
001110
101000
001000
011111
011110

Задача решающего головоломку состоит в том, чтобы, поворачивая слои, добиться того, чтобы все вертикальные столбцы были различны. Например, головоломка приведенная выше, не решена, поскольку два из ее столбцов (четвертый и пятый на приведенной развертке) одинаковы. Если же повернуть нижний слой влево на один квадратик, развертка головоломки примет следующий вид:

000110
001110
101000
001000
011111
111100

Теперь все столбцы различны и следовательно головоломка решена.

Для того, чтобы решать головоломку было интереснее, на ее раскраску наложено дополнительное условие: нельзя повернуть один из слоев головоломки меньше чем на полный оборот таким образом, что внешний вид головоломки останется тем же. Так, например, для n=6n = 6 слой с раскраской <<010101>> не разрешается, поскольку при его повороте на 2 квадратика внешний вид головоломки не меняется.

По заданной развертке головоломки выясните, можно ли ее решить, и если да, то приведите пример развертки решенной головоломки.

입력

Первая строка входного файла содержит число nn --- количество слоев в головоломке и количество квадратиков в одном слое (1n2001 \le n \le 200). Следующие nn строк содержат по nn символов, каждый из которых равен 0 или 1 --- развертку головоломки.

출력

Если решить головоломку можно, на первой строке выходного файла выведите слово <<Yes>>. В этом случае следующие nn строк должны содержать произвольную развертку решенной головоломки.

Если решить головоломку нельзя, выведите <<No>> на первой строке выходного файла.