#P16730. 魔术

魔术

题目描述

给定一个长度为 nn 的序列 a1,a2,,ana_1,a_2,\ldots,a_n,要求支持以下两种操作:

  1. 0 l r:对于所有 i[l,r]i\in[l,r],执行

    aiai2modp.a_i\leftarrow a_i^2\bmod p.
  2. 1 l r:询问

    i=lrai.\sum_{i=l}^{r}a_i.

输入格式

第一行包含三个整数 n,m,pn,m,p,分别表示序列长度、操作总数以及平方操作所使用的模数。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示初始序列。

接下来 mm 行,每行包含三个整数 op,l,rop,l,r

  • op=0op=0 时,表示对区间 [l,r][l,r] 执行平方取模操作;
  • op=1op=1 时,表示询问区间 [l,r][l,r] 的元素之和。

输出格式

对于每次询问操作,输出一行一个整数,表示对应区间内所有元素的总和。

注意:询问答案不对任何数取模。

样例 1

样例输入 1

3 3 11
1 2 3
1 1 3
0 1 3
1 1 3

样例输出 1

6
14

数据范围

对于全部数据:

0ai<p,1lrn.0\le a_i<p,\qquad 1\le l\le r\le n.

各测试点的 n,m,pn,m,p 如下:

测试点编号 nn mm pp
1 1000 233
2 2332
3 100000 5
4 8192
5 23
6 45
7 37
8 55000 4185
9 5850
10 2975
11 2542
12 2015
13 60000 2003
14 65000 2010
15 70000 4593
16 75000 4562
17 80000 1034
18 85000 5831
19 90000 9905
20 100000 9977