eolymp
bolt
Try our new interface for solving problems
Problems

Ленточка 3

Ленточка 3

Расположенную вертикально прямоугольную бумажную ленточку с закреплённым нижним концом стали складывать следующим образом: \begin{itemize} \item на первом шаге её согнули пополам так, что верхняя половина легла на нижнюю либо спереди (\textbf{P}-сгибание) либо сзади (\textbf{Z}-сгибание); \item на последующих \textbf{n-1} шагах выполнили аналогичное действие с получившейся на предыдущем шаге согутой ленточкой, как с единым целым. \end{itemize} Затем ленточку развернули, приведя её в исходное состояние. На ней остались сгибы - рёбра от перегибов, причём некоторые из рёбер оказались направленными выпуклостью к нам (\textbf{K}-рёбра), а некоторые - от нас (\textbf{O}-рёбра). Рёбра пронумеровали сверху вниз числами от \textbf{1} до \textbf{2^n-1}. \textbf{Требуется} написать программу, которая по заданным строке символов из прописных букв "\textbf{O}" и "\textbf{K}", где положение на \textbf{i}-ом месте символа "\textbf{O}" или "\textbf{K}" определяет тип ребра на расправленной полоске, находит подстроку из прописных "\textbf{P}" и "\textbf{Z}", определяющих последовательность типов сгибаний, посредством которых получена ленточка с этой последовательностью рёбер. \InputFile В первой строке входного файла записано число \textbf{n} - количество сгибаний (\textbf{n} не более \textbf{20}), во второй строке - строка из \textbf{2^n-1} символов "\textbf{O}" или "\textbf{K}", определяющих типы рёбер на расправленной ленточке. \OutputFile В единственную строку выходного файла нужно вывести строку из \textbf{n} символов "\textbf{P}" и "\textbf{Z}", задающих последовательность сгибаний. Если такой последовательности сгибаний не существует, то вывести в файл \textbf{NO}.
Time limit 1 second
Memory limit 64 MiB
Input example #1
2
OOK
Output example #1
PZ