Bikub
Mary Thomas-in bir neçə kvadrat kağız vərəqi var. Bu kvadratların bəziləri ön tərəfdə ya qara, ya da müəyyən bir rəngli rənglə (məsələn, qırmızı və ya mavi) boyanıb. Boyanmamış hissələri kəsərək, o, səkkiz açılmış vahid kub əldə edəcək. Burada vahid kub hər bir üzü bir kvadrat olan kubu ifadə edir.
Mary bu səkkiz vahid kubu ön tərəfi açıq şəkildə quracaq və sonra onlarla bir bikub yaradacaq. Bikub səkkiz vahid kubdan ibarət olan və aşağıdakı şərtlərə cavab verən 2×2×2 ölçüsündə bir kubdur:
Bikubun içərisinə gələn vahid kubların üzləri hamısı qara olmalıdır;
Bikubun hər üzü vahid rəngli rəngdə olmalıdır;
Bikubun üzlərinin rəngləri hamısı fərqli olmalıdır.
Sizin vəzifəniz, kvadrat kağız vərəqinin spesifikasiyasını oxuyan və ondan əldə edilən səkkiz vahid kubla bikubun qurulub-qurulmayacağını müəyyən edən bir proqram yazmaqdır.
Giriş verilənləri
Girişdə vərəqin spesifikasiyası verilir. İlk sətir vərəqin hündürlüyünü və enini göstərən iki tam ədəd H və W ehtiva edir (3 ≤ H, W ≤ 50). Sonra H sətir gəlir, hər biri W simvoldan ibarətdir. Bu sətirlər vərəqin ön tərəfindəki kvadratları göstərir. Bir simvol bir kvadratın rəngini təmsil edir: rəngli kvadratlar üçün əlifba hərfləri və rəqəmlər ('A'-dan 'Z'-ə, 'a'-dan 'z'-ə, '0'-dan '9'-a), qara kvadrat üçün bir hash ('#'), və boyanmamış kvadrat üçün bir nöqtə ('.'). Hər bir əlifba hərfi və ya rəqəm unikal rəngi ifadə edir: kvadratlar yalnız eyni simvolla təmsil edildikdə eyni rəngdədir.
Birləşmiş kvadratların hər bir komponenti bir açılmış kubu təşkil edir. Kvadratlar bir ümumi kənara sahib olduqda birləşmiş hesab edilir; yalnız ümumi bir zirvə ilə olanlar deyil.
Çıxış verilənləri
Verilmiş vərəqlə bikub qurula bilərsə "Yes" yazdırın; əks halda "No".