配点 : 500 点
問題文
(1,2,…,N) の順列 P=(P1,P2,…,PN) が与えられます。
下記の 2 つの条件をともに満たす長さ N の整数列 A=(A1,A2,…,AN) の個数を 998244353 で割ったあまりを出力してください。
- すべての i=1,2,…,N について、1≤Ai≤M。
- 整数列 A は整数列 (AP1,AP2,…,APN) より辞書順で小さい。
辞書順で小さいとは?
整数列 X=(X1,X2,…,XN) が 整数列 Y=(Y1,Y2,…,YN) より辞書順で小さいとは、下記の 2 つの条件をともに満たす整数 1≤i≤N が存在することを言います。
- 1≤j≤i−1 を満たすすべての整数 j について、Xj=Yj
- Xi<Yi
制約
- 1≤N≤2×105
- 1≤M≤109
- 1≤Pi≤N
- i=j⟹Pi=Pj
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
N M
P1 P2 … PN
出力
問題文中の 2 つの条件をともに満たす整数列 A の個数を 998244353 で割ったあまりを出力せよ。
4 2
4 1 3 2
6
問題文中の 2 つの条件をともに満たす整数列 A は、
$(1, 1, 1, 2), (1, 1, 2, 2), (1, 2, 1, 2), (1, 2, 2, 2), (2, 1, 1, 2), (2, 1, 2, 2)$ の 6 個です。
例えば、A=(1,1,1,2) のとき、$(A_{P_1}, A_{P_2}, A_{P_3}, A_{P_4}) = (2, 1, 1, 1)$ であり、これは A より辞書順で大きいです。
1 1
1
0
20 100000
11 15 3 20 17 6 1 9 5 19 10 16 7 8 12 2 18 14 4 13
55365742