Problem: 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.

Input

The first line of the input file contains a non-empty string, consisting of «(» and «)» characters. Its length does not exceed 106.

Output

Print the length of the longest substring that is a regular bracket sequence, and the number of such substrings. If there are no such substrings, write the only line containing "0 1".

Examples

Input

)((())))(()())


Output

6 2


Input

))(


Output

0 1

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String input = br.readLine();
		Stack<Integer> st = new Stack<>();
//		int max = 0;
//		int count = 0;
//		boolean reg = true;
//		int total_count = 0;
//		for(int i=0;i<input.length();i++) {
//			if(input.charAt(i)=='(') {
//				st.push(input.charAt(i));
//				count++;
//			}
//			else if(st.empty()) {
//				count = 0;
//				reg = true;
//			}
//			else {
//				st.pop();
//				count++;
//				if(st.empty()) {
//					max = Math.max(max, count);
//					if(reg) {
//						total_count++;
//						reg = false;
//					}
//				}
//				
//			}
//				
//		}
//		
//		if(max==0)
//			System.out.println("0 1");
//		else
//			System.out.println(max+" "+total_count);

		int[] dp = new int[2000001];		
		
		for(int i=0;i<input.length();i++)
	    {
	        if(input.charAt(i)=='(')
	            st.push(i);
	        else
	        {
	            if(!st.empty())
	            {
	                dp[i]=i-st.peek()+1;
	                if(st.peek()>0)
	                    dp[i]+=dp[st.peek()-1];
	                st.pop();
	            }
	        }
	    }
	    int ans1=0,ans2=1;
	    for(int i=0;i<input.length();i++)
	    {
	        if(dp[i]>ans1)
	        {
	            ans1=dp[i];
	            ans2=1;
	        }
	        else if(dp[i]==ans1)
	            ans2++;
	    }
	    if(ans1==0)
	        System.out.println("0 1");
	    else
	    	System.out.println(ans1+" "+ans2);
		
		bw.close();
		br.close();
	}
	
}