Please, try EDU on Codeforces! New educational section with videos, subtitles, texts, and problems.
×

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.

No tag edit access

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* _{ l i}, *s* _{ l i + 1}, ..., *s* _{ r i}. 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* _{ k 1} *s* _{ k 2}... *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-2020 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Jul/03/2020 22:31:59 (f3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|