長さ $N$ の数列 $A_1, A_2, \ldots, A_N$ が与えられる。以下のクエリを処理するプログラムを作成せよ。
1 x y v: $x \le i \le y$ について $A_i = (A_i + v) \% MOD$ とする。2 x y v: $x \le i \le y$ について $A_i = (A_i \times v) \% MOD$ とする。3 x y v: $x \le i \le y$ について $A_i = v$ とする。4 x y: $x \le i \le y$ について $(\sum_{i=x}^{y} A_i) \% MOD$ を出力する。
ここで $MOD$ は常に $10^9+7$ であり、$\%$ は剰余演算を表す。
入力
1 行目には数列の長さ $N$ が与えられる。($1 \le N \le 100{,}000$)
2 行目には $A_1, A_2, \ldots, A_N$ が与えられる。($1 \le A_i \le 10^9$)
3 行目にはクエリの個数 $M$ が与えられる。($1 \le M \le 100{,}000$)
次の $M$ 行には各クエリが与えられる。($1 \le x \le y \le N$, $1 \le v \le 10^9$)
出力
タイプ $4$ の各クエリについて、答えを順に 1 行ずつ出力せよ。
入出力例
入力例 1
4 1 2 3 4 4 4 1 4 1 1 3 10 2 2 4 2 4 1 4
出力例 1
10 69