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>.
if 1:
    expression = input()
    stack, temp = [], []
    for i in expression:
        # print(stack)
        if i == ')':
            t = 0
            while stack:
                if stack[-1] == '(':
                    stack.pop()
                    stack.append(t + 2)
                    t = 0
                    break
                else:
                    if '(' in stack:
                        if type(stack[-1]) == int:
                            if len(stack) > 1:
                                t += stack.pop()
                            else:
                                break
                        else:
                            stack.pop()
                    else:
                        break
            if t:
                # print(t, stack)
                stack.append(t)
        else:
            stack.append(i)
    res = 0
    for i in stack:
        if type(i) == int:
            res = max(res, i)
    c = 0
    for i in stack:
        if i == res:
            c += 1
    if res == 0:
        print(0, 1)
    else:
        print(res, c)
