12176. Поліоміно
Поліоміно - це шматок головоломки у формі зв'язаного багатокутника, який складається із з'єднання кількох квадратів своїми сторонами.
Існує сітка з чотирма рядками та чотирма стовпчиками та трьома поліоміно, які вписуються в сітку. Форма \(i\)-го поліміно представлена 16 символами \(P_{i,j,k}\) ( \(1≤j,k≤4)\). Вони описують стан сітки, коли на ній розміщено \(i\)-ту поліміно. Якщо \(P_{i,j,k}\) дорівнює #, квадрат у \(j\)-му рядку зверху та \(k\)-му стовпчику ліворуч займає поліміно; якщо це '.', квадрат не зайнятий.
Ви хочете заповнити сітку всіма трьома поліоміно так, щоб усі наведені нижче умови були задоволені.
- Усі квадрати сітки покриті поліоміно.
- Поліоміно не повинні перекривати один одного.
- Поліоміно не має стирчати з сітки.
- Поліоміно можна вільно перекладати та повертати, але не можна перевертати.
Чи можна сітку заповнити поліоміно, щоб задовольнити ці умови?
Обмеження
- \(P_{i,j,k}\) дорівнюють # або '.'.
- Дані поліоміно є зв’язаними. Іншими словами, до квадратів, які складають поліоміно, можна дістатися один від одного, слідуючи лише за квадратами вгору, вниз, ліворуч і праворуч.
- Наведені поліоміно не порожні.
Формат вхідних даних
Вхідні дані надаються зі стандартного вводу в такому форматі:
Формат вихідних даних
У вихідний потік виведіть відповідь: Yes або No.
Приклад вхідних даних
....
###.
.#..
....
....
.###
.##.
....
..#.
.##.
.##.
.##.
Приклад вихідних даних
Yes
На малюнку нижче показано форми поліоміно, що відповідають зразку вхідних даних.
У цьому випадку ви можете заповнити ними сітку, щоб задовольнити умови формулювання задачі, розмістивши їх, як показано на малюнку нижче.
Приклад вхідних даних
###.
#.#.
##..
....
....
..#.
....
....
####
##..
#...
#...
Приклад вихідних даних
Yes
Як і в першому поліоміно, поліоміно може мати форму багатокутника з отвором.
Приклад вхідних даних
##..
#..#
####
....
....
##..
.##.
....
.#..
.#..
.#..
.#..
Приклад вихідних даних
No
Коментарі