Дана последовательность $A_1, A_2, \ldots, A_N$ длины $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_{i=x}^{y} 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$ выведите ответ на отдельной строке в порядке следования.
Примеры
Входные данные 1
4 1 2 3 4 4 4 1 4 1 1 3 10 2 2 4 2 4 1 4
Выходные данные 1
10 69