This is yet another problem dealing with regular bracket sequences.

We should remind you that a bracket sequence is called regular, if by inserting «+» and «1» into it we can get a correct mathematical expression. For example, sequences «(())()», «()» and «(()(()))» are regular, while «)(», «(()» and «(()))(» are not. 

You are given a string of «(» and «)» characters. You are to find its longest substring that is a regular bracket sequence. You are to find the number of such substrings as well.
The first line of the input file contains a non-empty string, consisting of «(» and «)» characters. Its length does not exceed 10<sup class="upper-index">6</sup>.
s = input()
dp = [0] * len(s)
d, ans, k, st = 0, -1, 1, []
for i in range(len(s)):
  pepe = -1
  if s[i] == ")" and len(st) > 0:
    d, pepe = d - 1, st.pop()
  elif s[i] == "(":
    d += 1
    st.append(i)
  if d < 0:
    d, st = 0, []
  elif s[i] == ")" and pepe != -1:
    ws = i - pepe + 1
    if pepe - 1 >= 0:
      ws += dp[pepe - 1]
    if ans < ws:
      ans, k = ws, 1
    elif ans == ws:
      k += 1
    dp[i] = ws
print("%d %d" % (max(ans, 0), k))