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
def solve():
  n = int(input())
  s = [input() for _ in range(n)]
  l = []
  for si in s:
      lparen = rparen = 0
      for c in si:
          if c == '(':
              lparen += 1
          else:
              if lparen > 0:
                  lparen -= 1
              else:
                  rparen += 1
      l.append((rparen, lparen))
  inc = []
  dec = []
  for p, q in l:
      if p < q:
          inc.append((p, q))
      else:
          dec.append((p, q))
  inc.sort()
  k = 0
  for p, q in inc:
      if k < p:
          print('No')
          return
      k = k - p + q
  dec.sort(key=lambda x: x[1])
  t = 0
  for p, q in dec:
      if t < q:
          print('No')
          return
      t = t - q + p
  if k == t:
      print('Yes')
  else:
      print('No')
  return


solve()
