#agc055d. [agc055_d]ABC Ultimatum

[agc055_d]ABC Ultimatum

問題文

A, B, C をそれぞれちょうど NN 個ずつ含む長さ 3N3N の文字列 TT が次の条件を満たすとき、TT良い文字列と呼びます: TTNN 個の長さ 33 の(連続とは限らない)部分列に分解する方法であって、各部分列が ABC, BCA, CAB のいずれかであるような方法が存在する。

A, B, C, ? からなる長さ 3N3N の文字列 SS が与えられます。各 ?A, B, C のいずれかに置き換える方法であって、結果が良い文字列となるようなものの個数を求めてください。この個数は非常に大きい可能性があるため、これを 998244353998244353 で割った余りを出力してください。

制約

  • 1leNle151\\le N \\le 15
  • SS は、A, B, C, ? からなる長さ 3N3N の文字列である。

入力

入力は以下の形式で標準入力から与えられる。

NN SS

出力

答えを 998244353998244353 で割った余りを出力せよ。


入力例 1

1
???

出力例 1

3

得られる良い文字列は、ABC, BCA, CAB33 個です。


入力例 2

2
AA????

出力例 2

2

得られる良い文字列は、AABBCC, AABCBC22 個です。


入力例 3

3
?A?A?A?A?

出力例 3

0

A が既に 44 個含まれるため、良い文字列を得ることはできません。


入力例 4

9
?????????A??B??C???????????

出力例 4

331653164