#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void maximize(T& a, const T& b) {
if (a < b) a = b;
}
const int N = 1e6 + 5;
// Đây cũng là một dạng dp liên quan đến stack hay gặp
// Nên làm qua trước bài kiểm tra dãy ngoặc đúng bằng stack
// Với mỗi ngoặc đóng s[i] ta cần biết open_pos[i] là vị trí của ngoặc mở tương ứng với s[i]
// mỗi ngoặc đóng s[i] chỉ xác định được duy nhất một open_pos[i], hoặc -1 nếu không tồn tại ngoặc mở tương ứng
// Nhận xét quan trọng: Xâu con s[open_pos[i]..i] là một dãy ngoặc đúng
int n;
string s;
int open_pos[N]; // open_pos[i] = Vị trí của ngoặc mở tương ứng với ngoặc đóng s[i]
int dp[N]; // dp[i] = Độ dài xâu con liên tiếp dài nhất kết thúc tại i thoả mãn là dãy ngoặc đúng
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> s;
n = s.size();
s = ' ' + s;
memset(open_pos, -1, sizeof open_pos);
vector<int> st;
for (int i = 1; i <= n; i++) {
if (s[i] == '(') {
st.push_back(i);
}
else { // s[i] == ')'
if (!st.empty()) {
open_pos[i] = st.back();
st.pop_back();
}
}
}
int mx_length = 0;
for (int i = 1; i <= n; i++) {
if (open_pos[i] == -1) continue;
dp[i] = (i - open_pos[i] + 1) + dp[open_pos[i] - 1];
maximize(mx_length, dp[i]);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
cnt += (dp[i] == mx_length);
}
if (mx_length == 0) cnt = 1;
cout << mx_length << ' ' << cnt << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIG1heGltaXplKFQmIGEsIGNvbnN0IFQmIGIpIHsKCWlmIChhIDwgYikgYSA9IGI7ICAKfQoKY29uc3QgaW50IE4gPSAxZTYgKyA1OyAgCgovLyDEkMOieSBjxaluZyBsw6AgbeG7mXQgZOG6oW5nIGRwIGxpw6puIHF1YW4gxJHhur9uIHN0YWNrIGhheSBn4bq3cAovLyBOw6puIGzDoG0gcXVhIHRyxrDhu5tjIGLDoGkga2nhu4NtIHRyYSBkw6N5IG5nb+G6t2MgxJHDum5nIGLhurFuZyBzdGFjawovLyBW4bubaSBt4buXaSBuZ2/hurdjIMSRw7NuZyBzW2ldIHRhIGPhuqduIGJp4bq/dCBvcGVuX3Bvc1tpXSBsw6AgduG7iyB0csOtIGPhu6dhIG5nb+G6t2MgbeG7nyB0xrDGoW5nIOG7qW5nIHbhu5tpIHNbaV0KLy8gbeG7l2kgbmdv4bq3YyDEkcOzbmcgc1tpXSBjaOG7iSB4w6FjIMSR4buLbmggxJHGsOG7o2MgZHV5IG5o4bqldCBt4buZdCBvcGVuX3Bvc1tpXSwgaG/hurdjIC0xIG7hur91IGtow7RuZyB04buTbiB04bqhaSBuZ2/hurdjIG3hu58gdMawxqFuZyDhu6luZwovLyBOaOG6rW4geMOpdCBxdWFuIHRy4buNbmc6IFjDonUgY29uIHNbb3Blbl9wb3NbaV0uLmldIGzDoCBt4buZdCBkw6N5IG5nb+G6t2MgxJHDum5nCmludCBuOyAKc3RyaW5nIHM7IAppbnQgb3Blbl9wb3NbTl07IC8vIG9wZW5fcG9zW2ldID0gVuG7iyB0csOtIGPhu6dhIG5nb+G6t2MgbeG7nyB0xrDGoW5nIOG7qW5nIHbhu5tpIG5nb+G6t2MgxJHDs25nIHNbaV0KaW50IGRwW05dOyAvLyBkcFtpXSA9IMSQ4buZIGTDoGkgeMOidSBjb24gbGnDqm4gdGnhur9wIGTDoGkgbmjhuqV0IGvhur90IHRow7pjIHThuqFpIGkgdGhv4bqjIG3Do24gbMOgIGTDo3kgbmdv4bq3YyDEkcO6bmcKCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gczsgCgluID0gcy5zaXplKCk7ICAKCXMgPSAnICcgKyBzOyAgCgoJbWVtc2V0KG9wZW5fcG9zLCAtMSwgc2l6ZW9mIG9wZW5fcG9zKTsgIAoKCXZlY3RvcjxpbnQ+IHN0OyAgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlpZiAoc1tpXSA9PSAnKCcpIHsKCQkJc3QucHVzaF9iYWNrKGkpOyAKCQl9CgkJZWxzZSB7IC8vIHNbaV0gPT0gJyknCgkJCWlmICghc3QuZW1wdHkoKSkgewoJCQkJb3Blbl9wb3NbaV0gPSBzdC5iYWNrKCk7IAoJCQkJc3QucG9wX2JhY2soKTsgCgkJCX0KCQl9Cgl9CgoJaW50IG14X2xlbmd0aCA9IDA7IAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaWYgKG9wZW5fcG9zW2ldID09IC0xKSBjb250aW51ZTsgCgkJZHBbaV0gPSAoaSAtIG9wZW5fcG9zW2ldICsgMSkgKyBkcFtvcGVuX3Bvc1tpXSAtIDFdOyAKCQltYXhpbWl6ZShteF9sZW5ndGgsIGRwW2ldKTsgCgl9CgoJaW50IGNudCA9IDA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNudCArPSAoZHBbaV0gPT0gbXhfbGVuZ3RoKTsgCgl9CglpZiAobXhfbGVuZ3RoID09IDApIGNudCA9IDE7ICAgCgoJY291dCA8PCBteF9sZW5ndGggPDwgJyAnIDw8IGNudCA8PCAnXG4nOyAgCn0=