Example

Input

3
()(()((
))()()(()
)())(())


Output

Yes
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;

int main(){
  
  int n;
  cin>>n;
  
  string s;
  vector<P> v;
  
  int si=-1,gi=-1,flag=0;
  
  for(int i=0;i<n;i++){
    cin>>s;

    int l=0,r=0,cnt=0;
    
    for(int j=0;j<s.size();j++){
      
      if(s[j]=='(')cnt++;
      else{
	if(!cnt)l++;
	else cnt--;
      }

    }
    r=cnt;
    
    if(l||r){
      flag=1;
      v.push_back(P(l,r));

      if(!l)si=v.size()-1;
      if(!r)gi=v.size()-1;
    }
    
  }
  
  vector<bool> used(v.size(),0);
  
  bool ans=true;

  if(si!=-1&&gi!=-1){
    used[si]=used[gi]=true;
    
    int cnt=v.size()-2,L=v[si].second,pL=L;
    
    while(cnt--){
      int maxL=-1,maxl=-1,idx=-1;
      
      for(int i=0;i<v.size();i++){
	if(used[i])continue;

	if(L-v[i].first<0)continue;
		
	if(maxL<L-v[i].first+v[i].second){
	  maxL=L-v[i].first+v[i].second;
	  maxl=v[i].first;
	  idx=i;
	}
	
      }
      
      if(idx==-1){
	ans=false;
	break;
      }

      if(pL>maxL){
	maxL=maxl=idx=-1;
	
	for(int i=0;i<v.size();i++){
	  if(used[i])continue;
	
	  if(L-v[i].first<0)continue;

	  if(maxl<v[i].first){
	    maxL=L-v[i].first+v[i].second;
	    maxl=v[i].first;
	    idx=i;
	  }

	}


      }
      
      L=maxL;
      pL=L;
      
      used[idx]=true;
      
    }
    
    if(ans&&!(L-v[gi].first==0))  ans=false;
    
  }else if(flag)ans=false;
  
  if(!ans)cout<<"No"<<endl;
  else cout<<"Yes"<<endl;
  
  return 0;
}