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>.
string = input()
st = list()
mx = occ = 0

scores = [1] * len(string) + [0]

for idx, c in enumerate(string):
    if len(st) == 0:
        st.append(idx)
    elif string[st[-1]] == '(' and c == ')':
        popped = st.pop()
        scores[idx + 1] += scores[idx] + scores[popped]
        combined = scores[idx] + scores[popped]
        if combined > mx:
            mx = combined
            occ = 1
        elif combined == mx:
            occ += 1
    else:
        st.append(idx)

if mx == 0:
    print(mx, 1)
else:
    print(mx, occ)
