AT_agc061_f [AGC061F] Perfect Strings

Description

[problemUrl]: https://atcoder.jp/contests/agc061/tasks/agc061_f 正の整数 $ N,\ M $ があります。 `0` と `1` からなる文字列 $ s $ は、以下を全て満たすときに**良い**といわれます。 - $ s $ は空でない。 - $ s $ に含まれる `1` の個数は $ N $ の倍数である。 - $ s $ に含まれる `0` の個数は $ M $ の倍数である。 良い文字列は、より短い良い文字列を(連続した)部分文字列として含まないときに**完璧**であるといわれます。例えば、$ N\ =\ 3,\ M\ =\ 2 $ のとき、文字列 `111`, `00`, `10101` は完璧ですが、`0000`, `11001` は完璧ではありません。 任意の $ N,\ M $ について、完璧な文字列の個数は有限であることが示せます。与えられた $ N,\ M $ について、この個数を $ 998\,244\,353 $ で割った余りを求めてください。

Input Format

入力は、標準入力から以下の形式で与えられる。 > $ N $ $ M $

Output Format

答えを出力せよ。

Explanation/Hint

### 制約 - $ 1\ \leq\ N,\ M\ \leq\ 40 $ - 入力中の値は全て整数である。 ### Sample Explanation 1 完璧な文字列は `00`, `0101`, `1010`, `11` です。 ### Sample Explanation 2 完璧な文字列は `00`, `01011`, `01101`, `10101`, `10110`, `11010`, `111` です。