区间操作
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

定义一个数的漂亮值为  ,( 为正整数)。
 时, ,且   , 同时  全为质数 ; 
 时,   。
有一个段长为  的整数序列 , 第  个数为 
有以下两个操作:
 给定两个数 l , r 输出   。
  给定三个数 l , r , w 让所有    。


输入描述:

第一行一个整数   。
第二行  个整数,第  个整数   。
第三行一个整数 q  。
接下来  行,
第一个整数  ,
时,后面两个整数 l , r  , 并且执行操作  。
 时,后面三个整数 l , r , w , 并且执行操作  。

输出描述:

每次询问输出一行一个整数,表示询问的结果
示例1

输入

复制
5 
2 2 3 4 5
3
1 1 3
2 1 2 2
1 1 3

输出

复制
3
5

说明

第一次操作 , 询问区间  ,f(\Pi_{i=1}^{3}{b_i}) = f(12) = f(2^2\times3) = 3 , 所以第一行输出  。
第二次操作 , 更改区间  , 更改后序列变为 , , , ,  。