给一个长为 $n$ 的序列,$m$ 次操作,每次操作:
- 区间 $[l,r]$ 加 $x$;
- 对于区间 $[l,r]$,查询:
$$a[l]^{a[l+1]^{a[l+2]^{\dots ^{a[r]}}}} \mod p$$
输入格式
第一行两个整数 $n,m$ 表示序列长度和操作数。
接下来一行,$n$ 个整数表示这个序列。
接下来 $m$ 行,可能是以下两种操作之一:
- $1\ l\ r\ x$ 表示区间 $[l,r]$ 加上 $x$;
- $2\ l\ r\ p$ 表示对区间 $[l,r]$ 进行一次查询,模数为 $p$。
输出格式
对于每个询问,输出一个数表示答案。
样例数据
样例 1 输入
6 4
1 2 3 4 5 6
2 1 2 10000007
2 2 3 5
1 1 4 1
2 2 4 10
样例 1 输出
1
3
1
样例 2 输入
5 5
2 3 3 3 3
1 1 1 530739835
2 1 1 8356089
2 1 4 5496738
1 1 2 66050181
1 2 4 138625417
样例 2 输出
4306230
697527
子任务
Idea:nzhtl1477,Solution:nzhtl1477,Code:nzhtl1477,Data:nzhtl1477
对于100%的数据,$n , m \le 500000$ , 序列中每个数在$[1,2\cdot 10^9]$内,$p \le 2 \cdot 10^7 $, 每次加上的数在$[0,2\cdot 10^9]$内
共10组数据