func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int inv(long long int k) {     long long int vl = 1000000007 - 2;     long long int val = 1;     long long int b = k;     for (int i = 0; i < 63; i++) {       if ((vl >> i) & 1) {         val *= b;         val %= 1000000007;       }       b = b * b;       b %= 1000000007;     }     return val;   }   int main() {     string s;     cin >> s;     long long int l = s.size();     vector<long long int> vr(l + 1), op(l + 1);     vr[0] = 1;     for (int i = 1; i <= l; i++) {       vr[i] = i * vr[i - 1];       vr[i] %= 1000000007;     }     for (int i = 0; i < l; i++) {       if (s[i] ==  ( ) op[i + 1]++;       op[i + 1] += op[i];     }     long long int ans = 0;     for (int i = 0; i < l; i++) {       if (s[i] ==  ) ) continue;       long long int v = op[i + 1];       long long int v1 = op[l] - op[i + 1];       v1 = l - i - 1 - v1;       if (v1 == 0) continue;       long long int n = v + v1 - 1;       long long int k = v;       k = (vr[k] * vr[n - k]) % 1000000007;       k = inv(k);       k = (vr[n] * k) % 1000000007;       ans += k;       ans %= 1000000007;     }     cout << ans << endl;   }   