跳转至

贸易

  • 参考时间限制:2.0 秒(评测环境与性能)。
  • 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整;若平台仅支持更粗的粒度,再向上取整到平台可设置值。
  • 内存限制:256 MB

背景故事

火星殖民地终于度过了物资紧缺的阶段,开始定期生产和出售货物。仓库按当前售价优先出售最贵的物品,生产能力和售价也会调整。请根据操作记录,计算每次出售得到的收入。

形式化问题描述

有 \(n\) 种货物,编号为 \(1\) 到 \(n\) .第 \(i\) 种货物的初始单价为 \(c_i\) ,初始产量参数为 \(p_i\) ,初始库存均为零。按顺序处理以下操作:

  • 1 t :生产。每种货物 \(i\) 的库存增加 \(p_it\) .
  • 2 k :出售。按单价从高到低出售至多 \(k\) 件物品;单价相同时,优先出售种类编号较大的物品。库存不足时卖出全部库存。输出这次收入对 \(10^9+7\) 取模的结果。
  • 3 i p :将种类 \(i\) 的产量参数改为 \(p\) ,不改变已有库存。
  • 4 i c :将种类 \(i\) 的单价改为 \(c\) ,已有库存也立即使用新价格。

未售出的物品一直保留。一次出售可以卖出同一种货物的任意件数;\(k\) 表示物品件数。

输入格式

第一行两个整数 \(n,m\) .第二行依次给出 \(n\) 对整数 \(c_i,p_i\) .接下来 \(m\) 行,每行按上述格式给出一个操作。

输出格式

对每个出售操作输出一行一个整数,表示本次收入对 \(10^9+7\) 取模的结果。没有出售操作时不输出任何整数。

样例 1

输入

2 8
1 5 3 1
1 1
2 3
4 1 5
1 1
2 1
3 2 2
1 1
2 13

输出

5
5
63

样例 2

输入

2 5
5 1 5 1
1 1
2 1
4 2 9
2 1
2 1

输出

5
5
0

样例 3

输入

1 5
0 0
1 1000
2 0
3 1 100000
1 1000
2 1000000000000000000

输出

0
0

样例解释

样例 1 第一次出售一件单价 \(3\) 的物品和两件单价 \(1\) 的物品,收入为 \(5\) .随后两次收入分别为 \(5\) 和 \(63\) .样例 2 首次同价出售优先消耗种类 \(2\) ,所以随后把种类 \(2\) 涨价不会改变剩余那件物品的售价。样例 3 中所有被出售物品的价格都是零。

数据范围与保证

所有数据满足 \(1\le n,m\le300000\) .所有初始及修改后的单价满足 \(0\le c_i,c\le10^9\) ,产量参数满足 \(0\le p_i,p\le100000\) .操作中 \(0\le t\le1000\) ,\(0\le k\le10^{18}\) ,\(1\le i\le n\) .

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