#P750. 加与乘(二)

加与乘(二)

题目描述

nn 个存储单元,每个单元可以存储一个整数,这些单元的编号为 11nn 。一开始,每个单元的数字都是 00,接下来依次有 mm 条指令:

  • 第一种指令以 + 开头,后接两个整数 llrr,含义是将编号 ll 到编号 rr 单元的数字分别加一。
  • 第二种指令以 * 开头,后接两个整数 llrr,含义是重复执行第 ll 条指令到第 rr 条指令。保证这些指令的序号都在当前指令之前。

请输出每个单元格最后的数字,由于可能很大,输出它们模 1,000,000,0071,000,000,007 的余数。

输入格式

第一行:两个整数 nnmm 第二行到第 m+1m+1 行:在第 i+1i+1 行,先有一个字符 +*,后接两个整数 llrr

  • 若是 +,则保证 1lrn1\leq l\leq r\leq n
  • 若是 *,则保证 1lr<i1\leq l\leq r<i

输出格式

nn 行,第 ii 行只有一个数表示第 ii 个单元内存储的整数模 1,000,000,0071,000,000,007 的余数

3 3
+ 2 3
+ 1 2
* 1 2
2 
4 
2

数据范围

  • 对于 30%30\% 的数据,1n,m201\leq n,m\leq 20
  • 对于 60%60\% 的数据,1n,m10001\leq n,m\leq 1000
  • 对于 100%100\% 的数据,1n,m200,0001\leq n,m\leq 200,000