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>.
string = input()

regular = list(string)
c = 0
for i in range(len(string)):
    if string[i] == ')':
        for j in range(i-1, -1, -1):
            if regular[j] != 't':
                if string[j] == '(':
                    regular[j] = 't'
                    regular[i] = 't'
                break

reg_count = 0
longest = 0
curr = 0
on_chain = False
for b in regular:
    if b == 't' and not on_chain:
        reg_count += 1
        current = 1
        on_chain = True
        continue
    elif b == 't' and on_chain:
        current += 1
        continue
    elif b != 't' and on_chain:
        longest = max(longest, current)
        on_chain = False
        continue

print(f"{longest} {reg_count}")