#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 20;
char str[maxn];
const int mod = 1e9 + 7;
int pre[maxn], suf[maxn];
long long A[maxn];
long long pow_mod(long long x, int n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = ans * x % mod;
    n >>= 1;
    x = x * x % mod;
  }
  return ans;
}
long long inv(long long x) { return pow_mod(x, mod - 2); }
long long C(int n, int m) {
  return A[n] * inv(A[m]) % mod * inv(A[n - m]) % mod;
}
int main(void) {
  int a, b;
  A[0] = 1;
  for (int i = 1; i < maxn; i++) A[i] = A[i - 1] * i % mod;
  scanf("%s", str + 1);
  int n = strlen(str + 1);
  for (int i = 1; i <= n; i++) {
    pre[i] = pre[i - 1];
    suf[n - i + 1] = suf[n - i + 2];
    if (str[i] == '(') pre[i]++;
    if (str[n - i + 1] == ')') suf[n - i + 1]++;
  }
  long long cnt = 0;
  for (int i = 1; i <= n; i++) {
    if (pre[i] > pre[i - 1]) {
      cnt = (cnt + C(suf[i + 1] + pre[i] - 1, pre[i])) % mod;
    }
  }
  cout << cnt << endl;
}
