时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
这生命 无常又孤单
你的存在 是我唯一依赖
失去的梦 伤过的心
该怎么去 补完
有些困惑 这一生 我们都不知道答案
我错过太多美满
留过太多遗憾
而在这一次 我想要抓住
那份期盼
————《牵一半》阿良良木健(侵删)
定义函数
)
(p为质数)为,当

不是

的倍数时,
)
为

在模

意义下的乘法逆元(即
%20%E4%B8%BA%E6%9C%80%E5%B0%8F%E7%9A%84y%E4%BD%BF%E5%BE%97%20xy%20%5Cequiv%201%5Cpmod%20p)
),

是

的倍数时
%20%3D%200)
。
阿良良木健现在有一个序列长度为

的序列

,和

个操作。
操作有两种:

将

更改为

,求
))
其中
保证数据随机
随机方式如下:

在

中的正整数中 等概率随机生成
)
在

中随机生成

在

中的正整数中 等概率随机生成 生成后若

则交换

在

的质数中 等概率随机生成一个
输入描述:
第一行,两个正整数
)
。
后面一行,每行

个数,表示序列

后面

行,每行三个或四个数,表示一次操作
输出描述:
对于每个操作2,输出一行一个非负整数,表示这一询问的答案。
示例1
输入
复制
10 10
5 6 2 8 9 8 7 8 1 3
2 3 8 5
1 2 6
2 7 8 7
2 7 8 2
1 3 9
2 5 8 3
1 2 7
1 9 8
2 1 4 7
2 4 6 7