atcoder#ABC284G. [ABC284G] Only Once

[ABC284G] Only Once

配点 : 600600

問題文

11 以上 NN 以下の整数からなる長さ NN の数列 A=(A1,A2,,AN)A = (A_1,A_2,\dots,A_N) および整数 i (1iN)i\ (1\leq i \leq N) に対して、 長さ 1010010^{100} の数列 Bi=(Bi,1,Bi,2,,Bi,10100)B_i=(B_{i,1},B_{i,2},\dots,B_{i,10^{100}}) を以下のように定義します。

  • Bi,1=iB_{i,1}=i
  • Bi,j+1=ABi,j (1j<10100)B_{i,j+1}=A_{B_{i,j}}\ (1\leq j<10^{100})

また、SiS_i を「数列 BiB_i のなかでちょうど 11 度だけ出てくる数の種類数」と定義します。 より厳密には、SiS_i は「Bi,j=kB_{i,j}=k を満たす j (1j10100)j\ (1\leq j\leq 10^{100}) がちょうど 11 つであるような kk の数」です。

整数 NN が与えられます。数列 AA として考えられるものは NNN^N 通りありますが、それら全てに対して i=1NSi\displaystyle \sum_{i=1}^{N} S_i を求め、 その総和を MM で割った余りを答えてください。

制約

  • 1N2×1051\leq N \leq 2\times 10^5
  • 108M10910^8\leq M \leq 10^9
  • N,MN,M は整数

入力

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

NN MM

出力

答えを整数として出力せよ。

4 100000000
624

例として、A=(2,3,3,4)A=(2,3,3,4) の場合を考えます。

  • i=1i=1 のとき : B1=(1,2,3,3,3,)B_1=(1,2,3,3,3,\dots) となるから、11 度だけ出てくる数は 1,21,222 つで、S1=2S_1=2
  • i=2i=2 のとき : B2=(2,3,3,3,)B_2=(2,3,3,3,\dots) となるから、11 度だけ出てくる数は 22 のみで、S2=1S_2=1
  • i=3i=3 のとき : B3=(3,3,3,)B_3=(3,3,3,\dots) となるから、11 度だけ出てくる数は存在せず、S3=0S_3=0
  • i=4i=4 のとき : B4=(4,4,4,)B_4=(4,4,4,\dots) となるから、11 度だけ出てくる数は存在せず、S4=0S_4=0

よって、i=1NSi=2+1+0+0=3\displaystyle \sum_{i=1}^{N} S_i=2+1+0+0=3 です。

他の 255255 通りの AA に対しても同様に i=1NSi\displaystyle \sum_{i=1}^{N} S_i を計算したうえで、 256256 通り全ての総和をとると 624624 になります。

7 1000000000
5817084
2023 998244353
737481389

総和を MM で割った余りを出力してください。

100000 353442899
271798911