#xds3108. Two Sequence Queries

Two Sequence Queries

Two Sequence Queries

时间限制:3 秒 / 内存限制:1024 MB

Description

给定两个长度为 NN 的序列 AABB,现在需要维护 QQ 次以下三种操作:

  • 1 l r x:将 Al,Al+1,,ArA_l, A_{l+1}, \cdots, A_r 全部加 xx
  • 2 l r x:将 Bl,Bl+1,,BrB_l, B_{l+1}, \cdots, B_r 全部加 xx
  • 3 l r:求 i=lrAi×Bimod998244353\sum_{i=l}^r A_i \times B_i \mod 998244353

Input

第一行包含两个整数 NNQQ,分别表示数组的长度和操作次数(1N,Q2×1051 \leq N, Q \leq 2 \times 10^5)。

第二行包含 NN 个非负整数 A1,A2,,ANA_1, A_2, \dots, A_N,表示数组 AA 的初始值。

第三行包含 NN 个非负整数 B1,B2,,BNB_1, B_2, \dots, B_N,表示数组 BB 的初始值。

接下来 QQ 行,每行包含一个操作,操作的格式为:

  • 1 l r x:将 Al,Al+1,,ArA_l, A_{l+1}, \cdots, A_r 全部加 xx
  • 2 l r x:将 Bl,Bl+1,,BrB_l, B_{l+1}, \cdots, B_r 全部加 xx
  • 3 l r:查询 i=lrAi×Bimod998244353\sum_{i=l}^r A_i \times B_i \mod 998244353

每个操作中的 1lrN1 \leq l \leq r \leq N,且 0Ai,Bi,x1090 \leq A_i, B_i, x \leq 10^9

Output

对于每一个查询操作 3 l r,输出查询结果。

Example

Sample Input 1

5 6
1 3 5 6 8
3 1 2 1 2
3 1 3
1 2 5 3
3 1 3
1 1 3 1
2 5 5 2
3 1 5

Sample Output 1

16
25
84

Sample Input 2

2 3
1000000000 1000000000
1000000000 1000000000
3 1 1
1 2 2 1000000000
3 1 2

Sample Output 2

716070898
151723988