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())
S = [input() for _ in range(N)]

def solve() :
  T = []
  for s in S :
    open = 0
    close = 0
    for c in s :
      if c == ')' :
        if open > 0 :
          open -= 1
        else :
          close += 1
      else :
        open += 1
    T.append((open, close))
  
  if sum(op - cl for op, cl in T) != 0 :
    return 'No'
  
  inc = []
  dec = []
  for op, cl in T :
    if op >= cl :
      inc.append((cl, op))
    else :
      dec.append((op, cl))
      
  inc.sort()
  open = 0
  for cl, op in inc :
    if open >= cl :
      open += op - cl
    else :
      return 'No'
  
  close = 0
  dec.sort()
  for op, cl in dec :
    if close >= op :
      close += cl - op
    else :
      return 'No'
      
  return 'Yes'
      
print(solve())