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>.
from sys import stdin,stdout
input = stdin.readline

s = input()
n = len(s) - 1
right = 0
d = {0:-1}
parentheses = 0
count = {}

while(right < n):
    
    if(s[right] == '('):
        parentheses = parentheses + 1
    else:
        parentheses = parentheses - 1
        
    if(parentheses < 0):
        d = {0:right}
        parentheses = 0
        right += 1
        continue
  
    if(d.get(parentheses,None) != None):
        count[right - d[parentheses]] = count.get(right - d[parentheses],0) + 1
    else:
        d[parentheses] = right

    right += 1
        
mx,cnt = 0,1
for key,value in count.items():
    if(mx < key):
        mx,cnt = key,value

print(mx,cnt)
    