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>.
def findMax(string):
    arr = [-1 for i in range(len(string))]
    stack = []
    for i in range(len(string)):
        if(string[i]=="("):
            stack.append(i)
        else:
            if(len(stack)>0):
                top = stack.pop()
                arr[i] = top
                
    result, maxCount = 0,1
    for i in range(len(arr)):
        if(arr[i]!=-1):
            val = i-arr[i]+1
            if(val>result):
                result = val
                maxCount=1
            elif(val==result):
                maxCount+=1
    
    return result, maxCount

string = input()
result, count = findMax(string)
print(result, count) 