Мозаика
Компания «Headache», занимающаяся выпуском логических игрушек для детей, представила свою новую мозаику. В нее входит прямоугольная пластина, состоящая из N*M квадратов. Некоторые квадраты пластины изначально заняты, и в них ничего нельзя поставить. В комплекте поставляются также детали для складывания мозаики. Различных типов деталей всего 9, пронумерованы они от 1 до 9 в том порядке, в котором изображены на рисунке:
.
Конструкция каждой детали не позволяет поставить ее на пластину как бы то ни было повернутой. Все типы деталей являются различными, и нельзя с помощью поворота получить деталь другого типа. Деталь можно поставить только на свободные квадраты. Конструкция деталей была тщательно продумана, поэтому с помощью деталей 3 и 4 можно, например, сложить квадрат 2*2. В наборе деталей каждого типа достаточно для того, чтобы не заботиться об их количестве.
Каждый тип детали имеет свой уникальный цвет. Мозаика называется сложенной, если все квадраты пластины заняты. Два мозаичных узора различны, если есть квадраты, занятые деталями различных типов (цветов). Создателям очень хочется знать, сколько различных узоров сложенной мозаики может получиться. Это необходимо им для рекламной кампании. Ваша задача – помочь им разобраться в этом непростом вопросе.
Формат ввода
В первой строке находятся N – размер пластины по вертикали, и M – размер пластины по горизонтали. Затем в следующих N строках находятся ровно по M чисел, равных нулю или единице. Единица обозначает занятый квадрат, ноль – свободный.
Формат вывода
В первой строке должно находиться единственное число, равное количеству различных узоров сложенной мозаики.
.
Найдите число различных узоров для следующей структуры (доступно для копирования в буфер обмена):
8 6
0 1 0 0 0 1
1 0 1 0 0 1
1 0 1 0 1 1
0 1 0 0 1 1
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 1 1 1 1 1