#P10399. 『STA - R5』ReLyna

『STA - R5』ReLyna

背景

题目描述

你手中有一个数字 xx。走到位置 ii 时你可以将手中的数字变为 x+aix+a_i 或 x×bix\times b_i。

有 mm 次操作。

  • 1 x y z,执行 ax←ya_x\gets y,bx←zb_x\gets z。

  • 2 l r,查询若你从 [l,r][l,r] 的所有子区间中等概率选择一个子区间 [l′,r′][l',r'],则你从 l′l' 走到 r′r' 后手中的数的最大值的期望是多少?答案对 109+710^9+7 取模。每次行动开始前你手中的数字都会归零。

如果你不知道有理数如何取模,可以参考 P2613 有理数取余。

可参考样例解释理解题意。

输入格式

第一行两个整数 n,mn,m。

第二行 nn 个整数,第 ii 个整数代表 aia_i。

第三行 nn 个整数,第 ii 个整数代表 bib_i。

后 mm 行每行描述一次操作,格式见题目描述。

输出格式

对于每个询问,输出对应的期望。答案对 109+710^9+7 取模。

5 4
48 52 8 27 34 
3 4 3 2 2 
2 2 3
2 1 5
1 1 34 4
2 1 3

72
133333711
333333468

提示

样例解释

对于第一次询问,令 f(i,j)f(i,j) 为你从 ii 开始顺次走到 jj 后手中的数的最大值,则答案为 $\frac{1}{3}[f(2,2)+f(2,3)+f(3,3)]=\frac{1}{3}(52+156+8)=72$。

数据范围

子任务编号 nn mm 特殊性质 分值
Subtask #1 5050 无 5
Subtask #2 500500
Subtask #3 10510^5 10510^5 保证任何时刻 ai=1a_i=1 25
Subtask #4 5050 无
Subtask #5 10510^5 没有修改操作
Subtask #6 无 15

对于所有数据,1≤n,m≤1051\le n,m\le 10^5,0<ai<109+70<a_i<10^9+7,1<bi<109+71<b_i<10^9+7,保证操作合法,保证所有输入均为整数。