跳转至

Grox的序列六

  • 参考时间限制:0.5 秒。
  • 实际时限:标准程序在目标环境的最慢用例中位耗时乘以 2,再按 0.5 秒向上取整。
  • 内存限制:128 MB。
  • 参考评测环境与测量

背景故事

是先知或神秘主义者为我们带来了电力、抗生素、现代卫生设备、航太科学以及数位计时器吗?绝对不是。是那些循序渐进,利用他人成就创造新奇迹的家伙。

——科学之书5(《Spore》,英文资料)

Grox 虽然是一个机械种族,却并非从一开始就是这般模样。经过漫长的进化与自我改造,他们才逐渐成为今天的样子。

为了纪念 Grox 史诗般的进化历程,你决定送给他们一个递推数列作为礼物。这个数列是无穷的,Grox 只会询问其中感兴趣的项;他们也可能调整部分参数,但会保留决定递推结构的关键参数。毕竟,没有人喜欢抄写太长的数字,所有答案都需要按规定取模。

形式化问题描述

固定整数 \(\beta\) 和非负整数 \(k\) .整数参数 \(\alpha,a_0,\ldots,a_k\) 定义数列

\[ f(0)=\alpha \]
\[ f(n)=\beta f(n-1)+\sum_{i=0}^k a_i n^i\qquad(n\ge1) \]

共进行 \(Q\) 次操作:

  • 0 n :询问当前参数下的 \(f(n)\) 对 \(P=1000000007\) 取模的最小非负余数。
  • 1 alpha a0 ... ak :同时替换 \(\alpha,a_0,\ldots,a_k\) ;\(\beta\) 与 \(k\) 不变。

替换后,全部项由新参数和上述递推重新定义。参数可能为负。

输入格式

第一行三个整数 \(Q,\beta,k\) .第二行 \(k+2\) 个整数 \(\alpha,a_0,\ldots,a_k\) .接下来 \(Q\) 行,每行给出一次操作,格式见形式化描述。

输出格式

每次查询输出一行一个整数;替换操作没有输出。

样例

样例 1

输入

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

输出

3
8
19
42
89

样例 2

输入

5 1 0
-2 3
0 0
0 2
1 5 -1
0 0
0 3

输出

1000000005
4
5
2

样例 3

输入

3 0 1
7 3 -2
0 0
0 1
0 3

输出

7
1
1000000004

样例解释

样例一满足 \(f(n)=2f(n-1)+n\) .样例二在替换前满足 \(f(n)=-2+3n\) ,替换后满足 \(f(n)=5-n\) .样例三中 \(\beta=0\) ,所以正下标项直接等于 \(3-2n\) ,但零下标项仍为 \(7\) .

数据范围与保证

对 100% 数据:

\(1\le Q\le500\) ;\(0\le k\le200\) ;\(0\le n\le10^9\) ;\(|\alpha|,|\beta|,|a_i|\le10^9\) ;操作编号为 \(0\) 或 \(1\) .

分值比例 额外条件
100% 无额外条件