eolymp
bolt
Try our new interface for solving problems

Sudoku

\includegraphics{https://static.e-olymp.com/content/d2/d2fd1cca6533f4850588740d4592dde1dd51dd65.jpg} Yox! Bill sadəcə başa düşdü ki, son on dəqiqədə həlli üzərində düşündüyü Sudoku reallıqda keçən həftədəki məsələ idi, yalnız saat istiqamətinin əksinə çevrilmişdir. Necə də sadədir! Yəni jurnal hər həftə yeni məsələ verə bilmirmi? Əlbəttə, onun məsələni həll etməyə başlamazdan əvvəl bunun haqqında bilməsi imkanı yox idi, bəli rəqəmlə doldurulacaq boş yerlər keçən həftədəkinə nisbətən başqa idi. Buna baxmayaraq, bu həftə tapmacanın keçən həftədəkinin sadə törəməsi olduğunu nəzərə alsaq, əlbəttə ki, digərlərinin həllinə nisbətən daha çox zövqlü olar. Sudoku sahəsi \textbf{9}×\textbf{9 }xanalı cədvəldən ibarətdir. Onlar hər birində \textbf{3x3} ölçülü sahələr olan qruplaşdırıla bilər. Bəzi xanalar \textbf{1}-dən \textbf{9}-a qədər doldurulmuşdur, digərləri isə boşdur. Oyunun məqsədi ondan ibarətdir ki, hər bir boş xananı \textbf{1...9} intevalındakı rəqəmlə elə doldurmaq lazımdır ki, hər bir sətir, hər bir sütun və hər bir sahədə \textbf{1..9} intervalındakı hər bir rəqəm bir dəfə iştirak etsin. Həll edilməmiş Sudokunun, sözün əsil mənasında sadə əməliyyatlar vasitəsilə alınan əvvəlki məsələlərin törəməsi olduğunu yoxlayan proqram yazarkən gözlənilməz surprizlərdən qaçmaq üçün Billə kömək edin.. İcazə verilən əməliyyatlar aşağıdakılardır: \begin{enumerate} \item Bütün tapmacada saat əqrəbi istiqamətində və əksinə dönmək. \item Bir seqmetin \textbf{3x9} ölçülü kolonkasında iki sütunun dəyişdirilməsi. \item Bir seqmetin \textbf{3x9} ölçülü zolağında iki sətrin dəyişdirilməsi. \item Sətir və sütun seqmeninin yerlərinin dəyişdirilməsi. \item Hər bir xanada \textbf{1...9} arası \textbf{f} rəqəmin yerdəyişməsinin tətbiq edilməsi (məsələn, hər bir xanada \textbf{x}-in \textbf{f(x)} ilə dəyişdirilməsi). \end{enumerate} Hesab edilir ki, əməliyyat həll edilmiş Sudoku üzərində (yəni, həll eilməmiş deyil) aparılir, həmçinin həmişə qarantia verilir ki, əgər Sudokunun çevrilməsindən əvvəl həlli var idisə, onda bundan sona da həlli olacaq. \InputFile Giriş verilənləri testlərin sayını göstərən \textbf{N} ədədi ilə başlayır (\textbf{0} ≤ \textbf{N} ≤ \textbf{50}) Sonra hər bir test üçün tapmacanın keçən həftədəki həllinin şərhi yuxarıdan aşağıya doğru sətir-sətir \textbf{9} sətir olmaqla verilir. Keçən həftədəki həlldən sonra bu həftədə həll edilməmiş məsələlrin şərhi hər birində doqquz sətir olmaqla verilir. Burada bunda başqa, hər bir sətir tapmacanın sətirlərinə uyğun gəlir vər hər bir rəqəm (\textbf{0...9}) xananın məzmununu göstərir, \textbf{0} rəqəmi xananın boş olduğunu göstərir. Sətirlər yuxarıdan aşağıya sətir-sətir göstərilib, xanalar soldan sağa sıralanıb. Sonuncudan başqa hər bir testdən sonra bir boş sətir verilir. Hər bir həll edilməmiş tapmacanın, keçən həftə olduğu kimi, birmənalı şəkildə həll ediləcəyinə qarantiya verilir və bu həmişə Sudokunun yeganə həlli olacaqdır. \OutputFile İcazə verilən əməliyyatlardan istifadə etməklə tapmacanın verilmiş həllindən Sudoku alınarsa, Hər bir test üçün \textbf{Yes}, əgər bu mümkün deyilsə, \textbf{No} verməli.
Zaman məhdudiyyəti 15 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
2
963174258
178325649
254689731
821437596
496852317
735961824
589713462
317246985
642598173
060104050
200000001
008305600
800407006
006000300
700901004
500000002
040508070
007206900

534678912
672195348
198342567
859761423
426853791
713924856
961537284
287419635
345286179
010900605
025060070
870000902
702050043
000204000
490010508
107000056
040080210
208001090
Çıxış verilənləri #1
Yes
No