题目描述

bx最近在玩一款宠物养成游戏.
bx有$n$宠物,从$1$到$n$进行标号,第$i$个宠物的能力值为$a_i$.
在游戏中, bx可能会有两种操作:
$1\ l\ r\ b:$表示把对于标号$k \in[l, r]$的宠物, 能力值$a_k$变成$ak^b$
$2\ l\ r:$bx跟标号$k \in [l,r]$的宠物出去玩耍,bx获得愉悦值$\prod
{l <= k <= r} a_k$.
bx会进行$Q$次操作, 对于每次第二类型的操作,bx需要你输出他那次出去玩所获得的愉悦值, 由于愉悦值可能很大,你只需要输出它对$1000000007(1e9+7) $ 取模.


输入格式

第一行一个整数$T$表示数据组数.
对于每组数据, 第一行两个整数$n$和$Q$.
接下来一行$n$个整数,第$i$个表示第$i$个妹子初始的能力值$a_i$.
然后$Q$行,表示$Q$次操作.
每次操作为 $1\ l\ r\ b$ 或者 $2\ l\ r$.

$ 1 <= T <= 10 $
$ 1 <= n, Q <= 100000$
$ 0 <= a_i <= 1000000000 $
$ 0 <= b <= 1000000000$
$ 1 <= l <= r <= n $


输出格式

对每次操作$2$, 输出bx所获得的愉悦值对$1000000007(1e9+7)$取模.


样例数据

输入

1
4 4
1 2 3 4
1 1 3 2
2 1 4
1 3 4 3
2 2 3

输出


                        

备注

144
2916


操作

评测记录

优秀代码

信息

时间限制: 5s
内存限制: 128MB
评测模式: Normal

题解