#bitflyer2018finale. [bitflyer2018_final_e]数式とクエリ

[bitflyer2018_final_e]数式とクエリ

問題文

(, ), +, -, *, a のみからなる数式 SS が与えられます(詳細は問題文の後半を参照してください)。SS に含まれる a の個数を NN とします。

NN 個の整数 a1,...,aNa_1, ..., a_N22 個の整数 (bi,xi)(b_i, x_i) からなる QQ 個のクエリが与えられるので、これらのクエリを処理してください。

クエリ: 与えられた数式中の左から bib_i 番目の axix_i に、左から 1,...,bi1,bi+1,...,N1, ..., b_i-1, b_i+1, ..., N 番目の a をそれぞれ a1,...,abi1,abi+1,...,aNa_1, ..., a_{b_i-1}, a_{b_i+1}, ..., a_N に置き換えた数式の値と 109+710^9+7 を法として合同な 00 以上 109+610^9+6 以下の整数を出力する。

この問題で与えられる数式 SS は、以下のような BNF 表記の <expr> シンボルで表されます。

<expr> ::= <term> | <expr> '+' <term> | <expr> '-' <term>
<term> ::= <value> | <term> '*' <value>
<value> ::= 'a' | '(' <expr> ')' 

制約

与えられる数式に含まれる a の個数を NN とします。

  • SS の長さは 200,000200\\,000 以下
  • SS は問題文中の BNF 表記の <expr> シンボルとして表せる
  • 0ai<109+70 ≤ a_i < 10^9+7
  • 1Q1051 ≤ Q ≤ 10^5
  • 1biN1 ≤ b_i ≤ N
  • 0xi<109+70 ≤ x_i < 10^9+7
  • xix_i は整数

入力

入力は以下の形式で標準入力から与えられる。

SS QQ a1a_1 ... aNa_N b1b_1 x1x_1 : bQb_Q xQx_Q

出力

QQ 行出力せよ。 ii 行目 (1iQ1 ≤ i ≤ Q) には、ii 番目のクエリの答えを出力せよ。


入力例 1

(a-(a))*a
4
0 1 2
1 1
1 2
2 1
1 4

出力例 1

0
2
1000000005
6

例えば最初のクエリでは、左から 11 番目の a には x1=1x_1 = 1 が、左から 22 番目の a には a2=1a_2 = 1 が、左から 33 番目の a には a3=2a_3 = 2 を代入し、計算すると、 (1(1))\*2=0(1-(1))\*2 = 0 となり、00 が答えです。

33 番目ののクエリでは、左から 11 番目の a には a1=0a_1 = 0 が、左から 22 番目の a には x3=1x_3 = 1 が、左から 33 番目の a には a3=2a_3 = 2 を代入し、計算すると、 (0(1))\*2=2(0-(1))\*2 = -2 となり、109+710^9+7 を法として \-2\-2 と合同な 00 以上 109+610^9+6 以下の整数である、109+510^9+5 が答えです。


入力例 2

(a)*a+((a+(a*(a))-(a)*a+a*a))*a
10
8 6 6 4 8 1 4 3 8 9
3 4
3 9
8 4
3 7
4 0
8 9
3 6
9 0
6 8
9 4

出力例 2

552
597
642
579
282
1002
570
354
318
462