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>.
import sys

OPEN, CLOSE = '(', ')'
def create_expression_sequence(data):
    terminal = 0
    candidate_len, candidates = 0, []
    squares = ''
    for char in data:
        if char == OPEN:
            candidate_len += 1
            terminal += 1
            squares += '+1'
        elif char == CLOSE and terminal > 0:
            squares += '-1'
            candidate_len += 1
            terminal -= 1
        else:
            squares += ':'
    return squares

def solve(data):
    sequences = []
    sequence = create_expression_sequence(data)
    for sub in sequence.split(':'):
        if not sub: continue
        res = eval(sub)
        if res == 0:
            sequences.append(int(len(sub) / 2))
    if not sequences:
        print('0 1')
    else:
        print(max(sequences), len(sequences))

solve(sys.stdin.readline())