Задачи
Судоку
Судоку
Сетка Судоку представляет собой \textbf{16}×\textbf{16 }клеток сетки или сгруппированные в \textbf{4}×\textbf{4 }шестнадцать квадратов, где некоторые клетки заполняются буквами от \textbf{A} до \textbf{P} (первые \textbf{16} заглавных букв английского алфавита), как показано на рисунке 1а. Суть игры состоит в том, чтобы заполнить все пустые ячейки сетки буквами от \textbf{A} до \textbf{P} так, что каждая буква из сетки встречается только один раз в каждой строке, каждом столбце и каждом из квадратов \textbf{4}×\textbf{4}. Исходное содержание сетки удовлетворяет ограничениям выше и гарантирует единственное решение.
\includegraphics{https://static.e-olymp.com/content/c7/c7aaaf83919c7db2d5c279fa02ac552f9b355495.jpg}
\InputFile
Каждый набор входных данных кодирует сетку и содержит \textbf{16} строк по \textbf{16} символов подряд, как показано в примере входных данных. \textbf{i}--я строка очередного набора обозначает \textbf{i}-ю строку сетки, содержит \textbf{16} символов и начинается с первой позиции строки. Строка состоит из символов множества \{\textbf{A}, \textbf{B}, …, \textbf{P}, \textbf{-}\}, где "\textbf{--}" (минус) обозначает пустую ячейку сетки. Разные наборы данных разделены одной пустой строкой и заканчиваются с концом файла.
\OutputFile
Программа выводит решение для полученных на входе сеток в том же формате и порядке, что и для входных данных.
Входные данные #1
--A----C-----O-I -J--A-B-P-CGF-H- --D--F-I-E----P- -G-EL-H----M-J-- ----E----C--G--- -I--K-GA-B---E-J D-GP--J-F----A-- -E---C-B--DP--O- E--F-M--D--L-K-A -C--------O-I-L- H-P-C--F-A--B--- ---G-OD---J----H K---J----H-A-P-L --B--P--E--K--A- -H--B--K--FI-C-- --F---C--D--H-N-
Выходные данные #1
FPAHMJECNLBDKOGI OJMIANBDPKCGFLHE LNDKGFOIJEAHMBPC BGCELKHPOFIMAJDN MFHBELPOACKJGNID CILNKDGAHBMOPEFJ DOGPIHJMFNLECAKB JEKAFCNBGIDPLHOM EBOFPMIJDGHLNKCA NCJDHBAEKMOFIGLP HMPLCGKFIAENBDJO AKIGNODLBPJCEFMH KDEMJIFNCHGAOPBL GLBCDPMHEONKJIAF PHNOBALKMJFIDCEG IAFJOECGLDPBHMNK