E. Бесконечная игра
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Алиса и Боб играют в бесконечную игру, состоящую из сетов. Каждый сет состоит из раундов. В каждом раунде выигрывает один из игроков. В сете выигрывает тот, кто первым выиграет два раунда. Соответственно, сет всегда заканчивается со счётом $$$2:0$$$ или $$$2:1$$$ по раундам в пользу одного из игроков.

Сценарием игры назовём конечную строку $$$s$$$ из символов «a» и «b». Рассмотрим бесконечную строку, образованную повторениями строки $$$s$$$: $$$sss \ldots$$$ Пусть игроки играют раунды в соответствии с этой бесконечной строкой по порядку. Если очередной символ строки $$$sss \ldots$$$ равен «a», то в текущем раунде выигрывает Алиса, если «b» — выигрывает Боб. Как только один из игроков выигрывает два раунда, сет завершается в его пользу, и со следующего раунда начинается новый сет.

Пусть $$$a_i$$$ равно числу выигранных Алисой сетов среди первых $$$i$$$ сетов при игре по данному сценарию. Обозначим через $$$r$$$ предел отношения $$$\frac{a_i}{i}$$$ при $$$i \rightarrow \infty$$$. Если $$$r > \frac{1}{2}$$$, то строку $$$s$$$ назовём выигрышным для Алисы сценарием. Если $$$r = \frac{1}{2}$$$, то строку $$$s$$$ назовём ничейным сценарием. Если $$$r < \frac{1}{2}$$$, то строку $$$s$$$ назовём выигрышным для Боба сценарием.

Вам дана строка $$$s$$$, состоящая из символов «a», «b» и «?». Рассмотрим все способы заменить каждый символ «?» на «a» или «b», чтобы получить строку, состоящую только из символов «a» и «b». Посчитайте, в скольких случаях получится выигрышный для Алисы сценарий, в скольких — ничейный, а в скольких — выигрышный для Боба, и выведите эти три числа по модулю $$$998\,244\,353$$$.

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

Единственная строка ввода содержит строку $$$s$$$ ($$$1 \le |s| \le 200$$$), состоящую из символов «a», «b» и «?».

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

Выведите три числа: сколько способов замены приведут к выигрышному для Алисы сценарию, сколько — к ничейному, а сколько — к выигрышному для Боба. Все числа нужно вывести по модулю $$$998\,244\,353$$$.

Примеры
Входные данные
??
Выходные данные
1
2
1
Входные данные
?aa?b
Выходные данные
1
3
0
Входные данные
a???ba
Выходные данные
4
3
1
Входные данные
????????
Выходные данные
121
14
121
Входные данные
ba????a?a???abbb?
Выходные данные
216
57
239
Входные данные
a????a??????b??abbababbbb?a?aaa????bb
Выходные данные
97833
28387
135924
Входные данные
??????????????a????????????????b?????
Выходные данные
484121060
448940322
484613337
Примечание

В первом примере есть четыре варианта замены:

  • $$$s = \mathtt{aa}$$$: Алиса выигрывает все сеты со счётом $$$2:0$$$ — сценарий выигрышный для Алисы;
  • $$$s = \mathtt{ab}$$$: поочерёдно сначала Алиса, а потом Боб выигрывает сет со счётом $$$2:1$$$ — сценарий ничейный;
  • $$$s = \mathtt{ba}$$$: поочерёдно сначала Боб, а потом Алиса выигрывает сет со счётом $$$2:1$$$ — сценарий ничейный;
  • $$$s = \mathtt{bb}$$$: Боб выигрывает все сеты со счётом $$$2:0$$$ — сценарий выигрышный для Боба.