U203393 小 M 的变换
题目背景
## 此题数据已经完成重造。请大家重新提交。
小 M 喜欢奇怪的变换,所以他就把变换和序列操作结合起来出了一道题。
题目描述
小 M 有一个正整数 $p$。对于一个整数 $n$,定义对 $n$ 进行一次 $\text{fib}$ 变换为 $n\leftarrow \text{fib}_n\bmod p$,其中 $\text{fib}_n$ 表示斐波那契数列的第 $n$ 项(本题约定 $\text{fib}_0=0,\text{fib}_1=1$)。
现在小 M 对 $\text{fib}$ 变换的性质很感兴趣。因此他会给你一个长度为 $n$ 的序列 $a$,有 $m$ 次操作,可能为以下两种:
`1 l r k`:表示将区间 $[l,r]$ 之内的每一个数进行 $k$ 次 $\text{fib}$ 变换。形式化的说,定义函数 $f(n)=\text{fib}_n\bmod p$,则你需要 $\forall i\in[l,r],a_i\leftarrow f^{(k)}(a_i)=\begin{matrix}\underbrace{f(\cdots f(f(f(a_i))))}\\k次\end{matrix}$。
`2 l r`:表示将区间 $[l,r]$ 翻转。
你需要输出 $m$ 次操作后得到的序列。
**请注意,$k$ 的范围会达到 $\texttt{long long}$ 级别。**
输入格式
第一行共三个正整数,依次表示 $n,m,p$。
接下来一行,共 $n$ 个整数,其中第 $i$ 个数表示 $a_i$。
接下来 $m$ 行,每行可能是 `1 l r k` 或 `2 l r` 中的一种,表示一次操作。
输出格式
共一行,为 $n$ 个整数,表示 $m$ 次操作后得到的序列。
说明/提示
**【样例1解释】**
初始序列 $a$ 为 $\{1,2,3,4,5\}$。
第一次操作,将区间 $[2,4]$ 中的数进行一次 $\text{fib}$ 变换。因为 $\text{fib}_2=1,\text{fib}_3=2,\text{fib}_4=3$,操作后的序列为 $\{1,1,2,3,5\}$。
第二次操作,将区间 $[1,4]$ 翻转,操作后的序列为 $\{3,2,1,1,5\}$。
第三次操作,将区间 $[2,5]$ 翻转,操作后的序列为 $\{3,5,1,1,2\}$。
第四次操作,将区间 $[1,5]$ 的数进行两次 $\text{fib}$ 变换,第一次变换后得到 $\{2,5,1,1,1\}$,第二次变换后得到 $\{1,5,1,1,1\}$。
第五次操作,将区间 $[2,3]$ 翻转,操作后的序列为 $\{1,1,5,1,1\}$。
最终输出的结果为 $\text{1 1 5 1 1}$。
**【样例2解释】**
可以发现,$\text{fib}_{1509505}\bmod 3000000=1509505$,所以不论变换多少次其值都不变。
**【数据规模与约定】**
**本题采用捆绑测试。**
|子任务编号|$n,m$|$p$|特殊限制|时间限制|分值|
| :----------: | :----------: | :----------: | :----------: | :----------: | :----------: |
|$\text{Subtask 1}$|$1\leqslant n,m\leqslant 5\times10^5$|$p=1919810$|条件 $\text{A}$|$\text{2s}$|$15$|
|$\text{Subtask 2}$|$1\leqslant n,m\leqslant 5\times10^3$|$p=114514$|无|$\text{3s}$|$15$|
|$\text{Subtask 3}$|$1\leqslant n,m\leqslant5\times10^5$|$p=114514$|无|$\text{3s}$|$25$|
|$\text{Subtask 4}$|$1\leqslant n,m\leqslant 2.5\times10^5$|$2\leqslant p\leqslant2\times10^6$|无|$\text{4s}$|$20$|
|$\text{Subtask 5}$|$1\leqslant n,m\leqslant5\times10^5$|$2\leqslant p\leqslant5\times10^6$|无|$\text{4s}$|$25$|
条件 $\text{A}$:不存在操作 $1$。
对于 $100\%$ 的数据,满足 $1\leqslant n,m\leqslant 5\times10^5,2\leqslant p\leqslant 5\times10^6,0\leqslant a_i