#agc033e. [agc033_e]Go around a Circle

[agc033_e]Go around a Circle

問題文

円周が NN 個の点によって NN 等分され、それぞれが赤か青のいずれかで塗られているような円が、 RB からなる長さ MM の文字列 SS をすべての点から生成するとは、以下の条件を満たすことを指します。

  • 円周上の NN 個の点のうち 11 つを任意に選び、その点上に駒を置く。
  • 駒を時計回り、または反時計回りに隣合う点まで動かすことを MM 回繰り返す。
  • このとき最初にどの点を選んだとしても、うまく動かす向きを定めることで、ii 回目に駒が通る円弧の色が SiS_i であるようにできる。

ただし、SiS_iR のとき赤を、B のとき青を指すものとします。 また駒を動かす向きは、最初に選ぶ点ごとに変えられることに注意してください。

実際に RB からなる長さ MM の文字列 SS が与えられます。 円周が NN 等分されている円の各円弧を赤または青のいずれかで塗る 2N2^N 通りの方法のうち、 SS をすべての点から生成するような塗り方の個数を 109+710^9+7 で割ったあまりを求めてください。

ただし、回転して一致するような塗り方も区別して数えます。

制約

  • 2N2times1052 ≦ N ≦ 2 \\times 10^5
  • 1M2times1051 ≦ M ≦ 2 \\times 10^5
  • S=M|S|=M
  • SiS_iR または B

入力

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

NN MM SS

出力

条件を満たすような各円弧の塗り方の個数を 109+710^9+7 で割ったあまりを出力せよ。


入力例 1

4 7
RBRRBRR

出力例 1

2

赤と青が交互に塗られているときのみ条件を満たします。 なので、このケースの答えは 22 となります。


入力例 2

3 3
BBB

出力例 2

4

入力例 3

12 10
RRRRBRRRRB

出力例 3

78