e-olymp
Задачі

Двомірне доміно

Двомірне доміно

prb156 Кожен елемент двомірного доміно являє собою квадрат, сторони якого несуть на собі числа від 0 до 3, записані у двійковій системі числення. Доміно вважається складеним вірно, якщо кожна пара квадратів доміно, що мають спільну сторону, містить на цій стороні одне й те ж число.

Потрібно визначити, чи вірно складено доміно і чи можна додати до нього ще один заданий елемент так, щоб він мав сільну сторону хоча б з одним із заданих квадратів. При додаванні елемент можна довільним чином обертати, але не перевертати.

Вхідні дані

У першому рядку вхідного файлу через пропуск задано розміри прямокутника, шо містить у собі вже складене доміно: 2N, M100. Кожен з наступних N рядків містить через пропуск опис М позицій у прямокутнику у наступному вигляді:

• пуста позиція позначається ZZ;

• елемент, що займає не пусту позицію, задається шістнадцятковим текстовим представленням одного байту, у якому кожні два біти вказують число на одній зі сторін. Сторони перераховуються за годинниковою стрілкою, починаючи з лівої.

Останній рядок містить опис елемента, який пропонується додати до вже складеного набору. Припускається, що додавання відбувається у межах того ж прямокутника N×M.

Вихідні дані

У вихідному файлі повинно міститись одне з трьох слів:

ERROR (доміно складено невірно);

YES (доміно складено вірно, елемент додадти можна);

NO (доміно складено вірно, еле елемент додати не можна).

Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані
2 2
50 ZZ
8D FF
3F
Вихідні дані
YES