#CF380C. Sereja 与括号序列

Sereja 与括号序列

C. Sereja 与括号序列

每次测试的时间限制:11
内存限制:256256 兆字节

Sereja 有一个括号序列 s1,s2,,sns_1, s_2, \dots, s_n,换句话说,一个长度为 nn 的字符串 ss,由字符 "("")" 组成。

Sereja 需要回答 mm 个查询,每个查询由两个整数 li,ril_i, r_i 描述(1lirin1 \le l_i \le r_i \le n)。第 ii 个查询的答案是序列 sli,sli+1,,sris_{l_i}, s_{l_i+1}, \dots, s_{r_i}最长正确括号子序列 的长度。请帮助 Sereja 回答所有查询。

有关子序列和正确括号序列的定义,请参见提示。


输入

第一行包含一个字符序列 s1,s2,,sns_1, s_2, \dots, s_n1n1061 \le n \le 10^6),没有空格。每个字符是 "("")"
第二行包含整数 mm1m1051 \le m \le 10^5)——查询的数量。
接下来的 mm 行,每行包含一对整数。第 ii 行包含整数 li,ril_i, r_i1lirin1 \le l_i \le r_i \le n)——第 ii 个查询的描述。


输出

对每个查询,在一行中输出答案。按照输入中的顺序输出答案。


示例

输入:

())(())(())(
7
1 1
2 3
1 2
1 12
8 12
5 11
2 10

输出:

0
0
2
10
4
6
6

提示

  • 字符串 s=s1s2sss = s_1 s_2 \dots s_{|s|}(其中 s|s| 是字符串长度)的一个长度为 x|x| 的子序列是字符串 x=sk1sk2skxx = s_{k_1} s_{k_2} \dots s_{k_{|x|}}1k1<k2<<kxs1 \le k_1 < k_2 < \dots < k_{|x|} \le |s|)。
  • 正确括号序列是一个可以通过在字符串字符之间插入数字 11 和运算符 ++ 转换为正确算术表达式的括号序列。例如,括号序列 "()()""(())" 是正确的(得到的表达式是 "(1)+(1)""((1+1)+1)"),而 ")(""(" 是不正确的。

对于第三个查询,所需的序列是 "()"
对于第四个查询,所需的序列是 "()(())(())"