#icpc2016autumnj. [icpc2016autumn_j]Compressed Formula
[icpc2016autumn_j]Compressed Formula
问题描述
你将得到一个简单但很长的压缩格式的公式。压缩的公式是一个由对整数和字符串组成的序列,其中只包含数字('0'-'9')、'+'、'-'和'*'。为了从压缩的公式中还原原始公式,首先我们生成通过重复所有的 次得到的字符串,然后按照序列的顺序连接它们。
你可以假设恢复后的原始公式是完整的。更具体地说,恢复的公式满足以下BNF:
<expression> := <term> | <expression> '+' <term> | <expression> '-' <term>
<term> := <number> | <term> * <number>
<number> := <digit> | <non-zero-digit> <number>
<digit> := '0' | <non-zero-digit>
<non-zero-digit> := '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ```
这里,'+'表示加法,'-'表示减法,'*'表示整数乘法。
你的任务是编写一个程序,计算给定公式模$1{,}000{,}000{,}007$的答案,其中$x$模$m$是一个非负整数$r$,满足存在整数$k$使得$x = km + r$且$0 \le r < m$;对于整数$x$和$m$,保证这样的$r$是唯一确定的。
### 输入
输入由单个测试用例组成。
> $N$
> $r_1$ $s_1$
> ...
> $r_N$ $s_N$
第一行包含一个整数$N$($1 \le N \le 10^4$),它是压缩公式序列的长度。接下来的$N$行表示压缩公式的各个部分。第$i$行由一个整数$r_i$($1 \le r_i \le 10^9$)和一个字符串$s_i$($1 \le |s_i| \le 10$)组成,其中$t_i$是$s_i$的重复次数,$s_i$是原始公式的一部分。你可以假设通过将片段重复连接在一起从给定的压缩公式中恢复出的原始公式满足问题描述中的BNF。
### 输出
打印给定压缩公式模$1{,}000{,}000{,}007$的答案。
### 样例输入1
```plain
1
5 1```
### 样例输出1
```plain
11111```
### 样例输入2
```plain
2
19 2*
1 2```
### 样例输出2
```plain
1048576```
### 样例输入3
```plain
2
1 1-10
10 01*2+1```
### 样例输出3
```plain
999999825```
### 样例输入4
```plain
4
3 12+45-12
4 12-3*2*1
5 12345678
3 11*23*45```
### 样例输出4
```plain
20008570```