local mmi, mma = math.min, math.max
local n = io.read("*n", "*l")
local s = {}
local t = {}
-- local up, down = {}, {}
for i = 1, n do
  s[i] = io.read()
  local cur = 0
  local min = 0
  for j = 1, #s[i] do
    if s[i]:sub(j, j) == "(" then
      cur = cur + 1
    else
      cur = cur - 1
    end
    min = mmi(min, cur)
  end
  t[i] = {min, cur}
  -- if 0 <= cur then
  --   table.insert(up, {min, cur})
  -- else
  --   table.insert(down, {min, cur})
  -- end
end
local function sortfunc(a, b)
  -- return a[1] > b[1]
  if 0 <= a[2] * b[2] then
    return a[1] > b[1]
  else
    return a[2] > b[2]
  end

  -- if 0 <= a[2] and 0 <= b[2] then
  --   return a[1] >= b[1]
  -- elseif a[2] < 0 and b[2] < 0 then
  --   return a[1] >= b[1]
  -- else
  --   return a[2] > b[2]
  -- end
end
table.sort(t, sortfunc)
local cur = 0
local valid = true
for i = 1, n do
  local min, last = t[i][1], t[i][2]
  if cur + min < 0 then
    valid = false
    break
  end
  cur = cur + last
end
valid = valid and cur == 0
print(valid and "Yes" or "No")
