G - Count Arithmetic Progression Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

整数列 L = (L_1, L_2, \dots, L_N)R = (R_1, R_2, \dots, R_N) が与えられます。 以下の条件を満たす整数列 A = (A_1, A_2, \dots, A_N) の個数を 998244353 で割ったあまりを求めてください。

  • 1 \leq i \leq N を満たすすべての整数 i に対して L_i \leq A_i \leq R_i が成り立つ。
  • ある整数 d が存在して、1 \leq i \leq N-1 を満たすすべての整数 i に対して A_{i+1} - A_i = d が成り立つ。

制約

  • 入力はすべて整数
  • 2 \leq N \leq 3 \times 10^5
  • 1 \leq L_i \leq R_i \leq 10^{12} (1 \le i \le N)

部分点

以下の条件を満たすデータセットに正解した場合は 100 点が与えられる。

  • 1 \leq L_i \leq R_i \leq 10^5 (1 \le i \le N)

入力

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

N
L_1 L_2 \cdots L_N
R_1 R_2 \cdots R_N

出力

答えを出力せよ。


入力例 1

3
5 5 2
7 6 7

出力例 1

6

例えば A = (7, 5, 3) が条件を満たします。


入力例 2

4
2 3 1 6
5 6 4 8

出力例 2

0