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
 
"""

stack = 0
current = 0
maxlen = 0
occur = 1

sub = input()

for val in sub:
    if val == "(":
        if stack < 0:
            stack = 0
            current = 0

        stack += 1
        current += 1

    else:
        # stack = ')'
        stack -= 1
        
        if stack >= 0:
            current += 1

            # If stack < 0 this will trigger
            if maxlen == current and current != 0:
                occur += 1

            # if maxlen < current or maxlen > current
            elif maxlen < current:
                maxlen = current
                occur = 1

            assert True, "just chekin"

            print(maxlen, current, occur)

print(maxlen, occur)
