Задачі
Судоку
Судоку
Сітка Судоку являє собою \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