#include <bits/stdc++.h>
using namespace std;
int l[1000006];
int main() {
  string s;
  cin >> s;
  int j = 0;
  int m = 0, p = 1;
  stack<int> st;
  unordered_map<int, int> mp;
  for (int i = 0; i < s.length(); i++) {
    if (s[i] == '(') {
      st.push(i);
    } else if (!st.empty()) {
      int len = i - st.top() + 1;
      if (st.top() != 0)
        l[i] = len + l[i - len];
      else
        l[i] = len;
      mp[l[i]]++;
      st.pop();
    }
  }
  int n = s.length();
  mp[0] = 1;
  cout << *max_element(l, l + n) << " " << mp[*max_element(l, l + n)];
  return 0;
}
