Problem:
Score : 600 points

Problem Statement

A bracket sequence is a string that is one of the following:

An empty string;

The concatenation of (, A, and ) in this order, for some bracket sequence A ;

The concatenation of A and B in this order, for some non-empty bracket sequences A and B /

Given are N strings S_i. Can a bracket sequence be formed by concatenating all the N strings in some order?

Constraints

1 \leq N \leq 10^6

The total length of the strings S_i is at most 10^6.

S_i is a non-empty string consisting of ( and ).

Input

Input is given from Standard Input in the following format:

N
S_1
:
S_N

Output

If a bracket sequence can be formed by concatenating all the N strings in some order, print Yes; otherwise, print No.

Sample Input 1

2
)
(()

Sample Output 1

Yes

Concatenating (() and ) in this order forms a bracket sequence.

Sample Input 2

2
)(
()

Sample Output 2

No

Sample Input 3

4
((()))
((((((
))))))
()()()

Sample Output 3

Yes

Sample Input 4

3
(((
)
)

Sample Output 4

No

Solution in C (Clang 10.0.0) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <string.h>

int main()
{
	char s[1000000+1];
	int  left=0;
	int  right=0;
	int  N,n,m,l,r;

	scanf("%d",&N);
	for( n=0;n<N;n++ ) {
		l=r=0;
		scanf("%s",s);
		for( m=0;m<strlen(s);m++ ) {
			if( s[m]=='(' ) l++;
			if( s[m]==')' ) r++;
		}
		left+=l;
		right+=r;
		if( left>right ) {
			left-=right;
			right=0;
		} else {
			left=0;
			right-=left;
		}
	}
	if( left==0 && right==0 ) {
		printf("%s","Yes");
	} else {
		printf("%s","No");
	}
    return 0;
}