定义项为指若干个($\ge 1$)数字(0~9)相连得到的字符串(如123000是合法的项,wxh-1+5是不合法的项)。
0
9
123
000
wxh
-1
+5
一个合法的表达式可以为一个项(如233)、两个表达式以+-*相连(如2*3+5*56-6*6)、一个表达式在左右添一对括号(如(2*3*3))。
233
+
-
*
2*3+5*5
6-6*6
(2*3*3)
注意:空串不是一个合法的表达式。
在一开始,你会得到一个长为 $n$ 的字符串,之后会给定 $m$ 个操作。
有两种操作:
$1\ x\ y$ 表示将位置 $x$ 的字符改成 $y$。
$2\ l\ r$ 表示询问 $[l,r]$ 的字符串作为表达式求值在 $\mathrm{mod}\ 10^9+7$ 意义下的结果。若该串不是一个合法的表达式,结果为 $-1$。
第一行有两个整数 $n,m$。
第二行有一个长为 $n$ 的字符串。
接下来 $m$ 行,每行为 $1\ x\ y$ 或 $2\ l\ r$,分别表示两种操作。
对于每个 $2$ 操作,输出一个整数,表示该操作的答案。
5 12 2*(3) 2 1 1 2 4 4 2 1 5 1 3 2 2 1 5 2 1 4 2 1 3 2 2 3 1 1 ( 1 2 5 1 3 + 2 1 5
2 3 6 -1 46 4 -1 8
$1\le n,m\le 10^5,1\le l\le r\le n,1\le x\le n$。
字符集为0123456789+-*()。
1
2
3
4
5
6
7
8
(
)
若将(作为 $1$,)作为 $-1$,其他字符作为 $0$,则保证在任意时刻,该串的任意前缀和的绝对值不超过 $50$。