atcoder#ARC111F. [ARC111F] Do you like query problems?

[ARC111F] Do you like query problems?

配点 : 10001000

問題文

yosupoくんはクエリの問題が大好きなので、次のような問題を作りました。


A Query Problem

長さ NN の整数列 a1,,aNa_1,\ldots,a_N があります。はじめは ai=0(1iN)a_i = 0 (1 \leq i \leq N) です。 また、ansans という変数があり、はじめは ans=0ans = 0 です。 ここに、次の形式のクエリが QQ 個来ます。

  • クエリ1:
    • ti(=1)t_i (=1) lil_i rir_i viv_i
    • j=li,,rij = l_i,\ldots,r_i に対して、aj:=min(aj,vi)a_j := \min(a_j,v_i)
  • ti(=1)t_i (=1) lil_i rir_i viv_i
  • j=li,,rij = l_i,\ldots,r_i に対して、aj:=min(aj,vi)a_j := \min(a_j,v_i)
  • クエリ2:
    • ti(=2)t_i (=2) lil_i rir_i viv_i
    • j=li,,rij = l_i,\ldots,r_i に対して、aj:=max(aj,vi)a_j := \max(a_j,v_i)
  • ti(=2)t_i (=2) lil_i rir_i viv_i
  • j=li,,rij = l_i,\ldots,r_i に対して、aj:=max(aj,vi)a_j := \max(a_j,v_i)
  • クエリ3:
    • ti(=3)t_i (=3) lil_i rir_i
    • ali++aria_{l_i} + \ldots + a_{r_i} を計算して、ansans に足す
  • ti(=3)t_i (=3) lil_i rir_i
  • ali++aria_{l_i} + \ldots + a_{r_i} を計算して、ansans に足す

最終的な ansans の値を出力してください。

ただし、各クエリについて、11 \leq lil_i \leq rir_i \leq NN が、さらにクエリ1,2については 00 \leq viv_i \leq M1M-1 が成立する。


この問題を見たmaroonくんは簡単すぎると感じたため、次の問題を考えました。


Query Problems

正整数 N,M,QN,M,Q が与えられます。問題 "A Query Problem" に対する入力は ((N+1)N2(M+M+1))Q( \frac{(N+1)N}{2} \cdot (M+M+1) )^Q 通りありますが、それらに対する出力のすべての和を 998,244,353998{,}244{,}353 で割った余りを求めてください。


求めてください。

制約

  • 1N,M,Q2000001 \leq N,M,Q \leq 200000
  • 入力される数はすべて整数

入力

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

NN MM QQ

出力

答えを出力せよ。

1 2 2
1

ありうる入力は 2525 通りありますが、そのうち ansans が正になるような入力は、次の一通りです:

$t_1 = 2, l_1 = 1, r_1 = 1, v_1 = 1, t_2 = 3, l_2 = 1, r_2 = 1$

このとき ansans11 になるので、答えは 11 です。

3 1 4
0
111 112 113
451848306