#include <bits/stdc++.h>
using namespace std;
const int maxn=1000005;
struct datas { int L,R,dec; } cow[maxn];
int n;
char S[maxn];
bool cmp(datas A,datas B)
{
	if (A.dec>=0 && B.dec<0) return true;
	if (A.dec<0 && B.dec>=0) return false;
	if (A.dec>=0 && B.dec>=0) return A.L<B.L;
	return A.R>B.R;
}
int main()
{
	scanf("%d",&n);
	for (int i=1,len;i<=n;i++)
	{
		scanf("%s",S);
		len=strlen(S);
		for (int j=0;j<len;j++)
			if (S[j]=='(') cow[i].R++; else
			if (cow[i].R) cow[i].R--; else cow[i].L++;
		cow[i].dec=cow[i].R-cow[i].L;
	}
	sort(cow+1,cow+1+n,cmp);
	//for (int i=1;i<=n;i++) cerr<<">>>>>>"<<cow[i].L<<" "<<cow[i].R<<" "<<cow[i].dec<<endl;
	int now=0;
	for (int i=1;i<=n;i++)
	{
		if (now<cow[i].L)
		{
			puts("No");
			return 0;
		}
		now=now-cow[i].L+cow[i].R;
	}
	if (!now) puts("Yes"); else puts("No");
	return 0;
}
