Олимпиадный тренинг

Задача . D. Домино


Вам дано \(n\) домино. Каждое домино имеет левую и правую клетку. Каждая клетка может быть окрашена в черный или белый цвет. Некоторые клетки уже окрашены, а некоторые еще нет.

Раскраска считается допустимой тогда и только тогда, когда можно переставить доминошки в некотором порядке так, чтобы для каждого \(1 \le i \le n\) цвет правой клетки \(i\)-го домино отличался от цвета левой клетки \(((i \bmod n)+1)\)-го домино.

Обратите внимание, что домино нельзя вращать, поэтому левая клетка всегда остается левой, а правая — правой.

Подсчитайте количество допустимых способов раскрасить еще не раскрашенные клетки домино. Два способа считаются разными, если есть клетка, которая в одном способе окрашивается в белый цвет, а во втором — в черный. В частности, раскраски BW WB и WB BW различны (и обе недопустимы).

Поскольку это число может быть очень большим, выведите его по модулю \(998\,244\,353\).

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

Первая строка ввода содержит одно целое число \(n\) (\(1 \le n \le 10^5\)) — количество доминошек.

Следующие \(n\) строк описывают домино. Каждая строка содержит два символа, которые представляют левую и правую клетку. Символ B означает, что соответствующая клетка черная, символ W означает, что соответствующая клетка белая, а ? означает, что клетка еще не окрашена.

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

Выведите одно целое число — ответ на задачу.

Примечание

В первом примере есть только одна доминошка, и нам нужно, чтобы цвет ее правой клетки отличался от цвета ее левой клетки. Этого можно добиться только одним способом.

Во втором примере существует только \(2\) таких раскраски:

BB WW и WB WB.


Примеры
Входные данныеВыходные данные
1 1
?W
1
2 2
??
W?
2
3 4
BB
??
W?
??
10

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя