Codeforces Round 223 (Div. 1) |
---|

Finished |

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

data structures

schedules

*2000

No tag edit access

The problem statement has recently been changed. View the changes.

×
C. Sereja and Brackets

time limit per test

1 secondmemory limit per test

256 megabytesinput

standard inputoutput

standard outputSereja has a bracket sequence *s*_{1}, *s*_{2}, ..., *s*_{n}, or, in other words, a string *s* of length *n*, consisting of characters "(" and ")".

Sereja needs to answer *m* queries, each of them is described by two integers *l*_{i}, *r*_{i} (1 ≤ *l*_{i} ≤ *r*_{i} ≤ *n*). The answer to the *i*-th query is the length of the maximum correct bracket subsequence of sequence *s*_{li}, *s*_{li + 1}, ..., *s*_{ri}. Help Sereja answer all queries.

You can find the definitions for a subsequence and a correct bracket sequence in the notes.

Input

The first line contains a sequence of characters *s*_{1}, *s*_{2}, ..., *s*_{n} (1 ≤ *n* ≤ 10^{6}) without any spaces. Each character is either a "(" or a ")". The second line contains integer *m* (1 ≤ *m* ≤ 10^{5}) — the number of queries. Each of the next *m* lines contains a pair of integers. The *i*-th line contains integers *l*_{i}, *r*_{i} (1 ≤ *l*_{i} ≤ *r*_{i} ≤ *n*) — the description of the *i*-th query.

Output

Print the answer to each question on a single line. Print the answers in the order they go in the input.

Examples

Input

())(())(())(

7

1 1

2 3

1 2

1 12

8 12

5 11

2 10

Output

0

0

2

10

4

6

6

Note

A subsequence of length |*x*| of string *s* = *s*_{1}*s*_{2}... *s*_{|s|} (where |*s*| is the length of string *s*) is string *x* = *s*_{k1}*s*_{k2}... *s*_{k|x|} (1 ≤ *k*_{1} < *k*_{2} < ... < *k*_{|x|} ≤ |*s*|).

A correct bracket sequence is a bracket sequence that can be transformed into a correct aryphmetic expression by inserting characters "1" and "+" between the characters of the string. For example, bracket sequences "()()", "(())" are correct (the resulting expressions "(1)+(1)", "((1+1)+1)"), and ")(" and "(" are not.

For the third query required sequence will be «()».

For the fourth query required sequence will be «()(())(())».

Codeforces (c) Copyright 2010-2023 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Dec/12/2023 00:26:45 (l3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|