Étant donné une séquence $A_1, A_2, \ldots, A_N$ de longueur $N$. Écrire un programme pour traiter les requêtes suivantes :
1 x y v: fixer $A_i = (A_i + v) \% MOD$ pour $x \le i \le y$.2 x y v: fixer $A_i = (A_i \times v) \% MOD$ pour $x \le i \le y$.3 x y v: fixer $A_i = v$ pour $x \le i \le y$.4 x y: afficher $(\sum_{i=x}^{y} A_i) \% MOD$ pour $x \le i \le y$.
Ici $MOD$ vaut toujours $10^9+7$, et $\%$ désigne l'opération modulo.
Entrée
La première ligne contient la longueur $N$ de la séquence. ($1 \le N \le 100\,000$)
La deuxième ligne contient $A_1, A_2, \ldots, A_N$. ($1 \le A_i \le 10^9$)
La troisième ligne contient le nombre de requêtes $M$. ($1 \le M \le 100\,000$)
Les $M$ lignes suivantes contiennent chacune une requête. ($1 \le x \le y \le N$, $1 \le v \le 10^9$)
Sortie
Pour chaque requête de type $4$, afficher la réponse sur une ligne séparée dans l'ordre.
Exemples
Entrée 1
4 1 2 3 4 4 4 1 4 1 1 3 10 2 2 4 2 4 1 4
Sortie 1
10 69