A bracket sequence is a string that is one of the following:

1. An empty string;
2. The concatenation of `(`, A, and `)` in this order, for some bracket sequence A ;
3. The concatenation of A and B in this order, for some non-empty bracket sequences A and B /



Given are N strings S_i. Can a bracket sequence be formed by concatenating all the N strings in some order?

Constraints

* 1 \leq N \leq 10^6
* The total length of the strings S_i is at most 10^6.
* S_i is a non-empty string consisting of `(` and `)`.

Input

Input is given from Standard Input in the following format:


N
S_1
:
S_N


Output

If a bracket sequence can be formed by concatenating all the N strings in some order, print `Yes`; otherwise, print `No`.

Examples

Input

2
)
(()


Output

Yes


Input

2
)(
()


Output

No


Input

4
((()))
((((((
))))))
()()()


Output

Yes


Input

3
(((
)
)


Output

No
n = int(input())
sp, sm = [], []
res = 0
for _ in range(n):
    s = input()
    m = len(s)

    l, tl = 0, 0
    for i in range(m):
        if s[i] == ')':
            tl -= 1
        else:
            tl += 1
        l = min(l, tl)

    r, tr = 0, 0
    for i in range(m):
        if s[m-1-i] == '(':
            tr -= 1
        else:
            tr += 1
        r = min(r, tr)

    res += tl
    if tl >= 0:
        sp.append((l, tl))
    else:
        sm.append((r, tr))

if res != 0:
    print('No')
    exit()

sp.sort(key=lambda x: -x[0])
sm.sort(key=lambda x: -x[0])


xp = len(sp)
cur = 0
for l, tl in sp:
    if cur + l < 0:
        print('No')
        exit()
    cur += tl

cur = 0
for r, tr in sm:
    if cur + r < 0:
        print('No')
        exit()
    cur += tr

print('Yes')

