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 sys import stdin
brackets = stdin.readline().strip()
max_len, count = 0, 1
last_valid_len, current_len = 0, 0
depth = 0
for char in brackets:
    current_len += 1
    if char == '(':
        depth += 1
    elif char == ')':
        if depth:
            depth -= 1
        if not depth:
            if current_len:
                last_valid_len = current_len
                if last_valid_len > max_len: 
                    max_len = last_valid_len
                    count = 1
                elif last_valid_len == max_len: 
                    count += 1
            current_len = 0   
print(max_len, count)