Заданы два массива A и B одинаковой длины. Необходимо обработать три вида запросов.
\* l r x: добавить число x ко всем A[i]
, где l ≤ i ≤ r.
. l r x: добавить число x ко всем B[i]
, где l ≤ i ≤ r.
? l r: вычислить сумму A[l]
· B[l]
+ ... + A[r]
· B[r]
.
Массивы индексируются с 1. Изначально оба массива заполнены нулями.
Первая строка содержит два числа n и m (1 ≤ n, m ≤ 100000) - длины массивов и количество запросов. Следующие m строк содержат запросы в описанном выше формате. В каждом запросе 1 ≤ l ≤ r ≤ n и 1 ≤ x < 10^9
+ 7.
Для каждого запроса третьего типа вывести в отдельной строке ответ по модулю 10^9
+ 7.