D. Mental Out

传统 2000 ms 256 MiB
标准 IO
文本比较

题目描述

Misaki的能力是「心理掌控」。

她能了解每一个SisterMikoto的好感度aa

她的手提袋里有一把遥控器,能将一个Sister的好感度由aa变为f(a)f(a)

在调查Sister情报的时候,Misaki遇到了nnSister。这nnSister的标号从11nn,第iiSisterMikoto的好感度为aia_i

于是Misaki想要:

  • 对某段区间[l,r][l,r]内的Sister使用遥控器攻击;

  • 算出某段区间[l,r][l,r]内的SisterMikoto好感度的乘积。

这对于Level 5的Misaki来说自然不是问题,但你能做到吗?

形式化描述如下:

对于正整数i2i\geq 2,定义f(i)f(i)为除了本身以外ii的最大因子,如f(12)=6f(12)=6f(2)=1f(2)=1。特别地,定义f(0)=0,f(1)=1f(0)=0,f(1)=1

给定一个数列aa,你需要完成mm个操作,每个操作为以下22种之一:

操作11:将所有满足lirl\leq i \leq raia_i改为f(ai)f(a_i)

操作22:求所有满足lirl\leq i \leq raia_i的积对109+710^9+7取模后的结果。

输入格式

输入的第一行为11个整数n(1n2×105)n(1\leq n\leq 2\times10^5),表示数列的长度。

接下来一行包含nn个正整数,第ii个数字表示数列aaii项的初值ai(1ai2×107)a_i(1\leq a_i\leq 2\times10^7)

接下来一行包含11个整数m(1m2×105)m(1\leq m\leq 2\times10^5),表示操作个数

接下来mm行,每行包含33个整数op,l,r(op{1,2},1lrn)op,l,r(op\in\{1,2\}, 1\leq l \leq r \leq n),分别表示操作类型和区间范围,具体描述如下:

  • op=1op=1时,输入格式为1 l r1\ l\ r,表示将所有满足lirl\leq i \leq raia_i改为f(ai)f(a_i)
  • op=2op=2时,输入格式为2 l r2\ l\ r,表示求所有满足lirl\leq i \leq raia_i的积对109+710^9+7取模后的结果。

输出格式

对于每个操作22,输出一行包含一个整数,表示这个询问的答案。

样例

样例输入

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

样例输出

120
2

样例解释

在操作1 1 51\ 1\ 5之后,数组a=[1 1 1 2 1]a=[1\ 1\ 1\ 2\ 1]