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  collections import defaultdict
string = list(input())
# print(string)
stack = []
length = len(string)
i = 0
maxi = 0
count = 1
cnt = 1
# ans = defaultdict(int)
bracket = 0
for i in range(length):
    if len(stack) != 0 and stack[-1] == '(' and string[i] == ')':
        bracket += 2
        # print(maxi, bracket, 1)
        if bracket == maxi:
            cnt += 1
        elif bracket > maxi:
            cnt = 1
        # print(maxi, bracket)
        stack.pop()
        maxi = max(maxi, bracket)
    else:
        if stack and stack[-1] != "(":
            bracket = 0
        stack.append(string[i])

    # ans[maxi] += 1

# num = max(ans)
print(maxi, cnt)
