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

1. An empty string;
2. The concatenation of `(`, A, and `)` in this order, for some bracket sequence A ;
3. 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`.

Examples

Input

2
)
(()


Output

Yes


Input

2
)(
()


Output

No


Input

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


Output

Yes


Input

3
(((
)
)


Output

No
#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define repit(it, li) for(auto it=li.begin(); it!=li.end(); it++)
using namespace std;
using ll = long long;
using P = pair<int,int>;

int main(){
	int n;
	cin>>n;
	string s;

	int sum=0;
	vector< P > ps[2];
	rep(i, n){
		cin>>s;
		int p=0;
		int mn=0;
		rep(j, s.length()){
			if(s[j]=='(') p++;
			else p--;
			mn=min(mn, p);
		}
		if(p>=0) ps[0].push_back(make_pair(mn, p));
		else{
			int rp= -p;
			int rmn= mn-p;
			ps[1].push_back(make_pair(rmn, rp));
		}
	}

	bool ok=true;
	int fc[2];
	rep(k, 2){
		int c=0;
		sort(ps[k].rbegin(), ps[k].rend());
		repit(it, ps[k]){
			int mn=it->first, d=it->second;
			if(c+mn<0) ok=false;
			c+=d;
		}
		fc[k]=c;
	}
	if(fc[0]!=fc[1]) ok=false;

	if(ok) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
	return 0;
}
