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>.
"""
Author: Ove Bepari
 
         _nnnn_                      
        dGGGGMMb     ,''''''''''''''''''''''.
       @p~qp~~qMb    | Promoting GNU/Linux  |
       M|@||@) M|   _;......................'
       @,----.JM| -'
      JS^\__/  qKL
     dZP        qKRb
    dZP          qKKb
   fZP            SMMb
   HZM            MMMM
   FqM            MMMM
 __| ".        |\dS"qML
 |    `.       | `' \Zq
_)      \.___.,|     .'
\____   )MMMMMM|   .'
     `-'       `--' hjm
 
"""

current = 0
longest = 0
occurrances = 1

stack = []
string = input()

for val in string:
    if val == '(':
        stack.append(val)

    elif val == ')' and not stack:
        occurances = 1
        current = 0
        continue

    else:
        # if stack not empty
        if stack and val == ')':
            stack.pop(0)
            current += 2

        # if stack is empty
        if not stack:
            if longest < current:
                longest = current
                occurrances = 1
            elif longest == current != 0:
                occurrances += 1

print(longest, occurrances)
