Рассмотрим следующую грамматику:
- <expression> ::= <term> | <expression> '+' <term>
- <term> ::= <number> | <number> '-' <number> | <number> '(' <expression> ')'
- <number> ::= <pos_digit> | <number> <digit>
- <digit> ::= '0' | <pos_digit>
- <pos_digit> ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
Эта грамматика задаёт число в десятичной системе счисления по следующим правилам:
- <number> задаёт себя,
- <number>-<number> (l-r, l ≤ r) задаёт число, полученное как конкатенация всех чисел от l до r, записанных без ведущих нулей. Например, 8-11 задает число 891011,
- <number>(<expression>) задаёт число, полученное как конкатенация <number> копий числа, задаваемого <expression>,
- <expression>+<term> задаёт число, полученное как конкатенация чисел, задаваемых <expression> и <term>.
Пример: 2(2-4+1)+2(2(17)) задаёт число 2341234117171717.
Дано выражение, выведите остаток от деления числа, которое оно задаёт, на 109 + 7.
Выходные данные
В единственной строке выведите остаток от деления числа, задаваемого выражением, на 109 + 7.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
8-11
|
891011
|
|
2
|
2(2-4+1)+2(2(17))
|
100783079
|
|
3
|
1234-5678
|
745428774
|
|
4
|
1+2+3+4-5+6+7-9
|
123456789
|