Example

Input

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


Output

Yes
#include<bits/stdc++.h>
#define f first
#define s second
#define mp make_pair
#define MAX 101
#define inf 1<<29
using namespace std;

string s[MAX];
int n;

int f1(string t,int c){
  for(int i=0;i<t.length();i++){
    if(t[i]=='(')c++;
    else c--;
    if(c<0)return -inf;
  }
  return c;
}

int f2(string t,int c){
  for(int i=t.length()-1;0<=i;i--){
    if(t[i]==')')c++;
    else c--;
    if(c<0)return -inf;
  }
  return c;
}

string solve(){
  int l=0,r=0;
  bool b[MAX]={};
  for(int k=0;k<n;k++){
    pair<int,int> m=mp(-1,-1);
    for(int i=0;i<n;i++){
      if(!b[i])m=max(m,mp(f1(s[i],l),i));
    }
    if(m.f<l)break;
    l=m.f;
    b[m.s]=true;
  }

  for(int k=0;k<n;k++){
    pair<int,int> m=mp(-1,-1);
    for(int i=0;i<n;i++){
      if(!b[i])m=max(m,mp(f2(s[i],r),i));
    }
    if(m.f<r)break;
    r=m.f;
    b[m.s]=true;
  }
  for(int i=0;i<n;i++)if(!b[i])return "No";

  if(r==l)return "Yes";
  return "No";
}

int main()
{
  cin>>n;
  for(int i=0;i<n;i++)cin>>s[i];

  cout<<solve()<<endl;

  return 0;
}