#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 5;
const int MAXL = 1e6 + 5;

char s[MAXL];

struct Node
{
	int l,r;
};
inline bool cmp_l(const Node &p,const Node &q){ return p.l<q.l;}
inline bool cmp_r(const Node &p,const Node &q){ return p.r<q.r;}
vector<Node> a,b;

int main(void)
{
	int n;
	scanf("%d",&n);
	for(int i=1; i<=n; ++i)
	{
		scanf("%s",s+1);
		int l=0, r=0;
		for(int i=1; s[i]; ++i)
		{
			if(s[i]=='(') ++r;
			if(s[i]==')')
			{
				if(r) --r;
				else ++l;
			}
		}
		
		if(l<=r) a.push_back((Node){l,r});
		else b.push_back((Node){l,r});
	}
	
	sort(a.begin(),a.end(),cmp_l);
	int r=0;
	for(int i=0; i<(int)a.size(); ++i)
	{
		if(a[i].l > r){ printf("No"); return 0;}
		r = r - a[i].l + a[i].r;
	}
	
	sort(b.begin(),b.end(),cmp_r);
	int l=0;
	for(int i=0; i<(int)b.size(); ++i)
	{
		if(b[i].r > l){ printf("No"); return 0;}
		l = l - b[i].r + b[i].l;
	}
	
	if(l==r) printf("Yes");
	else printf("No");
	return 0;
}