E. Куро и Топологическая четность
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Куро только что выиграл соревнование «Самый умный кот». Три друзья решили отпраздновать эту победу, поиграв в различные игры.

Куро попросил Кэти придумать игру, для которой нужны только бумага, карандаш, ножницы и много стрелок (считайте, что стрелок бесконечно много). Кэти тут же придумала игру и назвала ее Топологическая четность.

На бумаге рисуют $$$n$$$ прямоугольников, пронумерованных от $$$1$$$ до $$$n$$$. Широ раскрашивает некоторые прямоугольники в некоторые цвета. А именно, $$$i$$$-й прямоугольник раскрашивается в цвет $$$c_{i}$$$, где $$$c_{i} = 0$$$ означает черный цвет, $$$c_{i} = 1$$$ — белый, а $$$c_{i} = -1$$$ означает, что этот прямоугольник не покрашен.

Правила игры просты. Игроки могут добавлять стрелки между различными прямоугольниками, причем каждая стрелка должна начинаться в прямоугольнике с меньшим номером, чем прямоугольник, в котором она заканчивается. Кроме того, игроки должны выбрать цвет ($$$0$$$ или $$$1$$$) для каждого еще не покрашенного прямоугольника. Между двумя прямоугольниками должно быть не более одной стрелки. Результатом игры будет количество путей из прямоугольников чередующихся цветов. Например, пути, составляющие цвета $$$[1 \to 0 \to 1 \to 0]$$$, $$$[0 \to 1 \to 0 \to 1]$$$, $$$[1]$$$, $$$[0]$$$ будут посчитаны. Из прямоугольника $$$x$$$ можно перейти в прямоугольник $$$y$$$, если и только если есть стрелка из $$$x$$$ в $$$y$$$.

Куро понравилась игра, но он придумал, как сделать ее еще лучше. Он любит играть с четностью чисел. Его любимая четность равна $$$p$$$, где $$$p = 0$$$ обозначает «четное», а $$$p = 1$$$ — «нечетное». Он хочет расставить стрелки и покрасить оставшиеся прямоугольники так, чтобы результат игры имел четность $$$p$$$.

Так как может существовать много вариантов так расставить стрелки и выбрать цвета, посчитайте количество способов сделать это по модулю $$$10^{9} + 7$$$.

Входные данные

Первая строка содержит два целых числа $$$n$$$ и $$$p$$$ ($$$1 \leq n \leq 50$$$, $$$0 \leq p \leq 1$$$) — количество прямоугольников и любимая четность Куро.

Вторая строка содержит $$$n$$$ целых чисел $$$c_{1}, c_{2}, ..., c_{n}$$$ ($$$-1 \leq c_{i} \leq 1$$$) — цвета прямоугольников.

Выходные данные

Выведите одно число — число способов расставить стрелки и выбрать оставшиеся цвета так, чтобы число путей с чередующимися цветами имело такую же четность, как и $$$p$$$.

Примеры
Входные данные
3 1
-1 0 1
Выходные данные
6
Входные данные
2 1
1 0
Выходные данные
1
Входные данные
1 1
-1
Выходные данные
2
Примечание

В первом примере есть $$$6$$$ способов покрасить кусочки и нарисовать стрелки, они показаны на рисунке ниже. Результаты игр в верхней строке равны $$$3, 3, 5$$$, во второй — $$$5, 3, 3$$$, слева направо.