#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
vector<pii> ls, rs;
bool check() {
	int tot = 0;//记前缀和
	for(int i=0; i<ls.size(); i++) {
		if(tot+ls[i].first<0)
			return false;
		tot+=ls[i].second;
	}
	for(int i=0; i<rs.size(); i++) {
		if(tot+rs[i].second-rs[i].first<0)
			return false;
		tot+=rs[i].second;
	}
	return true;
}
bool cmp(const pii &a,const pii &b) {
	if(a.first==b.first) return a.second>b.second;
	return a.first>b.first;
}
int main() {
	int n;
	cin >> n;
	int sum = 0;//所有序列值总和
	for(int i=1; i<=n; i++) {
		string s;
		cin >> s;
		int cnt= 0, min_pre = 1e9;
		//对每个序列，cnt记任权值和，min_pre记任意前缀最小值
		for(int i=0; i<s.size(); i++) {
			if(s[i]== '(') ++cnt;
			else --cnt;
			min_pre = min(min_pre, cnt);
		}
		sum += cnt;
		if(cnt>=0) ls.push_back(make_pair(min_pre,cnt));
		else rs.push_back(make_pair(cnt-min_pre,cnt));
	}
	sort(ls.begin(),ls.end(),cmp);
	sort(rs.begin(),rs.end(),cmp);
	if(sum==0&&check())
		puts("Yes");
	else
		puts("No");
	return 0;
}