func_code_string: #include <bits/stdc++.h>   using namespace std;   pair<long long, pair<long long, long long> > stree[4000005];   char sa[1000005];   void build(long long node, long long start, long long end) {     if (start == end) {       stree[node].first = 0;       stree[node].second.first = 0;       stree[node].second.second = 0;       if (sa[start] ==  ( )         stree[node].second.first = 1;       else if (sa[start] ==  ) )         stree[node].second.second = 1;     } else {       long long mid = (start + end) / 2;       build(2 * node, start, mid);       build(2 * node + 1, mid + 1, end);       long long com =           min(stree[2 * node].second.first, stree[2 * node + 1].second.second);       long long left =           stree[2 * node].second.first + stree[2 * node + 1].second.first - com;       long long right =           stree[2 * node].second.second + stree[2 * node + 1].second.second - com;       stree[node].first = stree[2 * node].first + stree[2 * node + 1].first + com;       stree[node].second.first = left;       stree[node].second.second = right;     }   }   pair<long long, pair<long long, long long> > query(long long node,                                                      long long start,                                                      long long end, long long l,                                                      long long r) {     if (l > end || start > r) return make_pair(0, make_pair(0, 0));     if (l <= start && r >= end) return stree[node];     long long mid = (start + end) / 2;     pair<long long, pair<long long, long long> > p1 =         query(2 * node, start, mid, l, r);     pair<long long, pair<long long, long long> > p2 =         query(2 * node + 1, mid + 1, end, l, r);     long long a = min(p1.second.first, p2.second.second);     long long b = p1.second.first + p2.second.first - a;     long long c = p1.second.second + p2.second.second - a;     return make_pair(p1.first + p2.first + a, make_pair(b, c));   }   int main() {     string str;     cin >> str;     long long n, q;     n = str.length();     cin >> q;     for (long long i = 1; i <= n; i++) sa[i] = str[i - 1];     build(1, 1, n);     while (q-- != 0) {       long long x, y;       cin >> x >> y;       long long ans = 2 * query(1, 1, n, x, y).first;       cout << ans << endl;     }     return 0;   }   