#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 1;
int f[MAXN];
int s[MAXN];
int e[MAXN];
int main() {
  string S;
  cin >> S;
  int maxi = 0;
  int len = 0;
  int start = 0;
  stack<int> st;
  f[0] = 1;
  s[0] = -1;
  e[0] = -1;
  for (int i = 0; i < S.length(); i++) {
    if (S[i] == '(') {
      st.push(i);
    } else if (st.empty()) {
      e[i] = s[i] = -1;
    } else {
      start = st.top();
      st.pop();
      s[i] = e[i] = start;
      start--;
      if (start >= 0 && S[start] == ')' && s[start] >= 0 && e[start] >= 0) {
        e[i] = e[start];
      }
      len = i - e[i] + 1;
      f[len]++;
      maxi = max(maxi, len);
    }
  }
  cout << maxi << " " << f[maxi] << "\n";
  return 0;
}
