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 ll long long
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);
using namespace std;

signed main(){
  fastio
  int n;cin>>n;
  vector<string>s(n);
  vector<pair<int,int>>a(n);
  for(int i=0;i<n;i++){
    int mi=0,bal=0;
    cin>>s[i];
    for(int j=0;j<s[i].size();j++){
      if(s[i][j]=='(') bal++;
      else             bal--;
      mi=min(mi,bal);
    }
    a[i].first=abs(mi);   // clsoe
    bal+=abs(mi);
    a[i].second=bal;  //open
    // cout<<a[i].first<<" "<<a[i].second<<"\n";
  }
  sort(a.begin(),a.end(),[&](pair<int,int>a,pair<int,int>b){
    return min(-a.first,-a.first+a.second-b.first)>min(-b.first,-b.first+b.second-a.first);
  });
  // for(auto x:a){
  //   cout<<x.first<<" "<<x.second<<"\n";
  // }
  int bal=0,mi=0;
  for(int i=0;i<n;i++){
    bal-=a[i].first;
    mi=min(mi,bal);
    bal+=a[i].second;
  }
  if(mi<0 || bal!=0){
    cout<<"No\n";
  }else{
    cout<<"Yes\n";
  }
  return 0;
}