#include <bits/stdc++.h>
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 4000000;
using namespace std;
struct {
  long long ans, open, close;
} t[MAXN], res;
long long l, r;
void modify(long long v, long long tl, long long tr, long long pos,
            long long v1, long long v2) {
  if (tl == tr) {
    t[v].open = v1;
    t[v].close = v2;
    return;
  }
  long long tm = (tl + tr) / 2;
  if (pos <= tm)
    modify(v * 2, tl, tm, pos, v1, v2);
  else
    modify(v * 2 + 1, tm + 1, tr, pos, v1, v2);
  long long k = min(t[v * 2].open, t[v * 2 + 1].close);
  t[v].ans = t[v * 2].ans + t[v * 2 + 1].ans + k * 2;
  t[v].open = t[v * 2].open + t[v * 2 + 1].open - k;
  t[v].close = t[v * 2].close + t[v * 2 + 1].close - k;
}
void get(long long v, long long tl, long long tr) {
  if (tl >= l && tr <= r) {
    long long k = min(res.open, t[v].close);
    res.ans = res.ans + t[v].ans + k * 2;
    res.open = res.open - k + t[v].open;
    res.close = res.close - l + t[v].close;
    return;
  }
  long long tm = (tl + tr) / 2;
  if (l <= tm && r >= tl) get(v * 2, tl, tm);
  if (l <= tr && r > tm) get(v * 2 + 1, tm + 1, tr);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  string s;
  long long i, j, n, m;
  cin >> s;
  n = s.size();
  for (i = 0; i < n; ++i) {
    if (s[i] == '(')
      modify(1, 1, n, i + 1, 1, 0);
    else
      modify(1, 1, n, i + 1, 0, 1);
  }
  cin >> m;
  for (i = 1; i <= m; ++i) {
    cin >> l >> r;
    res.ans = 0;
    res.open = 0;
    res.close = 0;
    get(1, 1, n);
    cout << res.ans << endl;
  }
  return 0;
}
