길이가 $N$인 수열 $A_1, A_2, \ldots, A_N$이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.
1 x y v: $A_i = (A_i + v) \% MOD$를 수행한다. ($x \le i \le y$)2 x y v: $A_i = (A_i \times v) \% MOD$를 수행한다. ($x \le i \le y$)3 x y v: $A_i = v$를 수행한다. ($x \le i \le y$)4 x y: $(\sum A_i) \% MOD$를 출력한다. ($x \le i \le y$)
여기서 $MOD$는 항상 $10^9+7$이며, $\%$는 나머지 연산을 의미한다.
입력
첫째 줄에 수열의 크기 $N$이 주어진다. ($1 \le N \le 100{,}000$)
둘째 줄에는 $A_1, A_2, \ldots, A_N$이 주어진다. ($1 \le A_i \le 10^9$)
셋째 줄에는 쿼리의 개수 $M$이 주어진다. ($1 \le M \le 100{,}000$)
넷째 줄부터 $M$개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. ($1 \le x \le y \le N$, $1 \le v \le 10^9$)
출력
$4$번 쿼리에 대해서 정답을 한 줄에 하나씩 순서대로 출력한다.
Sample
Input
4 1 2 3 4 4 4 1 4 1 1 3 10 2 2 4 2 4 1 4
Output
10 69