配点 : 1000 点
問題文
yosupoくんはクエリの問題が大好きなので、次のような問題を作りました。
A Query Problem
長さ N の整数列 a1,…,aN があります。はじめは ai=0(1≤i≤N) です。
また、ans という変数があり、はじめは ans=0 です。
ここに、次の形式のクエリが Q 個来ます。
- クエリ1:
- ti(=1) li ri vi
- 各 j=li,…,ri に対して、aj:=min(aj,vi)
- ti(=1) li ri vi
- 各 j=li,…,ri に対して、aj:=min(aj,vi)
- クエリ2:
- ti(=2) li ri vi
- 各 j=li,…,ri に対して、aj:=max(aj,vi)
- ti(=2) li ri vi
- 各 j=li,…,ri に対して、aj:=max(aj,vi)
- クエリ3:
- ti(=3) li ri
- ali+…+ari を計算して、ans に足す
- ti(=3) li ri
- ali+…+ari を計算して、ans に足す
最終的な ans の値を出力してください。
ただし、各クエリについて、1 ≤ li ≤ ri ≤ N が、さらにクエリ1,2については
0 ≤ vi ≤ M−1 が成立する。
この問題を見たmaroonくんは簡単すぎると感じたため、次の問題を考えました。
Query Problems
正整数 N,M,Q が与えられます。問題 "A Query Problem" に対する入力は (2(N+1)N⋅(M+M+1))Q 通りありますが、それらに対する出力のすべての和を 998,244,353 で割った余りを求めてください。
求めてください。
制約
- 1≤N,M,Q≤200000
- 入力される数はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
N M Q
出力
答えを出力せよ。
1 2 2
1
ありうる入力は 25 通りありますが、そのうち ans が正になるような入力は、次の一通りです:
$t_1 = 2, l_1 = 1, r_1 = 1, v_1 = 1, t_2 = 3, l_2 = 1, r_2 = 1$
このとき ans は 1 になるので、答えは 1 です。
3 1 4
0
111 112 113
451848306