괄호 부분 문자열 쿼리

각 질의가 주는 부분 문자열에서 가장 긴 괄호 문자열 부분 수열의 길이를 구한다.

보통7누적 합문자열이분 탐색정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

괄호 문자열을 다음과 같이 정의한다.

  1. 빈 문자열은 괄호 문자열이다.
  2. SS가 괄호 문자열이면 (S)(S)도 괄호 문자열이다.
  3. SSTT가 괄호 문자열이면 STST도 괄호 문자열이다.
  4. 괄호 문자열은 위 세 규칙으로만 만들 수 있다.

'('와 ')'로 이루어진 문자열 S=s1s2sNS = s_1 s_2 \dots s_N과 쿼리 MM개가 주어진다. 각 쿼리는 두 정수 lil_i, rir_i (1liriN1 \le l_i \le r_i \le N)로 이루어진다.

각 쿼리마다 부분 문자열 slisli+1sris_{l_i} s_{l_i + 1} \dots s_{r_i}의 부분 수열 중에서 괄호 문자열이면서 가장 긴 것의 길이를 구한다.

문자열 S=s1s2sNS = s_1 s_2 \dots s_N의 길이가 x|x|인 부분 수열은 1k1<k2<<kxN1 \le k_1 < k_2 < \dots < k_{|x|} \le N을 만족하는 문자열 x=sk1sk2skxx = s_{k_1} s_{k_2} \dots s_{k_{|x|}}을 뜻한다.

입력

첫째 줄에 문자열 SS가 주어진다. SS는 '('와 ')'로만 이루어지고, 길이 NN1N1061 \le N \le 10^6을 만족한다.

둘째 줄에 쿼리의 개수 MM이 주어진다. (1M1051 \le M \le 10^5)

셋째 줄부터 MM개의 줄에 걸쳐 각 쿼리의 lil_irir_i가 공백을 사이에 두고 주어진다.

출력

각 쿼리의 답을 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.