Problem:
Score : 600 points

Problem Statement

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

An empty string;

The concatenation of (, A, and ) in this order, for some bracket sequence A ;

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.

Sample Input 1

2
)
(()

Sample Output 1

Yes

Concatenating (() and ) in this order forms a bracket sequence.

Sample Input 2

2
)(
()

Sample Output 2

No

Sample Input 3

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

Sample Output 3

Yes

Sample Input 4

3
(((
)
)

Sample Output 4

No

Solution in Ruby (2.7.1) (judge verdict: Accepted)

N = gets.to_i

Up = []
Down = []
N.times do
    m = 0
    c = 0
    gets.chomp.each_char do |s|
        c += s== "(" ? 1 : -1
        m = [c,m].min
    end

    if c >= 0 then
        Up << [m,c] 
    else
        Down << [m-c, -c]
    end
end 

a,b = [Up,Down].map do |list|
    curr = 0
    list.sort_by!{|m,f| - m}
    list.each do |m,f|
        if m+curr<0 then
            puts "No"
            exit
        end
        curr += f
    end
    curr
end

puts a==b ? "Yes" : "No"