#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using vl = vector<ll>;
template<class T> using vc = vector<T>;
template<class T> using vvc = vector<vector<T>>;

#define eb emplace_back
#define all(x) (x).begin(), (x).end()
#define rep(i, n) for (ll i = 0; i < (n); i++)
#define repr(i, n) for (ll i = (n)-1; i >= 0; i--)
#define repe(i, l, r) for (ll i = (l); i < (r); i++)
#define reper(i, l, r) for (ll i = (r)-1; i >= (l); i--)
#define repa(i,n) for (auto& i: n)

template<class T> inline bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T> inline bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
void init() {cin.tie(0);ios::sync_with_stdio(false);cout << fixed << setprecision(15);}

#ifdef DEBUG
template <class T, class N> void verr(const T& a, const N& n) { rep(i, n) cerr << a[i] << " "; cerr << "\n" << flush; }
ll dbgt = 1; void err() { cerr << "passed " << dbgt++ << "\n" << flush; }
template<class H, class... T> void err(H&& h,T&&... t){ cerr<< h << (sizeof...(t)?" ":"\n") << flush; if(sizeof...(t)>0) err(forward<T>(t)...); }
#endif

const ll INF = 5e18;
const ld EPS = 1e-11;
const ld PI = acos(-1.0L);
const ll MOD = 1e9 + 7;
// const ll MOD = 998244353;
//--------------------------------------------------------------------------------//

struct kk{
    ll p = 0, m = 0;
    kk() { p = 0, m = 0; }
    kk(ll pp, ll mm):p(pp),m(mm){}
};
int main() {
    init();
    ll N;
    cin >> N;
    vc<string> S(N);
    vc<kk> A(N);
    rep(i, N) cin >> S[i];

    ll sum = 0;
    rep(i,N){
        ll a = 0;
        repa(c,S[i]){
            if(c=='('){
                a++;
                A[i].p++;
            }
            else{
                a--;
                if(A[i].p==0)
                    A[i].m++;
                else
                    A[i].p--;
            }
        }
        // err(A[i].p, A[i].m);
        sum += a;
    }

    if(sum!=0){
        cout << "No" << endl;
        return 0;
    }

    vc<kk> L, R;
    rep(i,N){
        ll s = A[i].p - A[i].m;
        if(s>0){
            L.eb(kk(A[i].p, A[i].m));
        }
        else if(s<0){
            R.eb(kk(A[i].p, A[i].m));
        }
    }
    sort(all(L), [](kk k1, kk k2) { return k1.m < k2.m; });
    sort(all(R), [](kk k1, kk k2) { return k1.p < k2.p; });

    // err();
    ll ldd = 0, rdd = 0;
    rep(i,L.size()){
        if(ldd<L[i].m){
            cout << "No" << endl;
            return 0;
        }
        ldd += L[i].p - L[i].m;
    }
    // err();
    rep(i,R.size()){
        if(rdd<R[i].p){
            cout << "No" << endl;
            return 0;
        }
        rdd += R[i].m - R[i].p;
    }
    // err();

    ll l = 0,
       r = 0, c = 0;
    bool m0 = false, p0 = false, allb = true;
    rep(i,N){
        ll s = A[i].p - A[i].m;
        if(s>0){
            allb = false;
            if (A[i].m==0) m0 = true;
            l += s;
        }
        else if(s<0){
            allb = false;
            s = -s;
            if (A[i].p==0) p0 = true;
            r += s;
        }
        else{
            chmax(c, A[i].p);
        }
    }
    if (c > 0) allb = false;
    // err(m0, p0, l, r, c);

    if(m0 and p0 and l>=c and r>=c)
        cout << "Yes" << endl;
    else if(allb)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}

Measured memory_bytes: 65900