local read = setmetatable({}, {__index = function(t, k) local a = {} for i=1,#k do table.insert(a, '*'..string.sub(k, i, i)) end local r = io.read local u = table.unpack or unpack return function() return r(u(a)) end end})
read.N = function(N) local t={} for i=1,N do t[i]=read.n() end return t end
string.totable = function(s) local t={} local u=string.sub for i=1,#s do t[i] = u(s, i, i) end return t end
string.split = function(s) local t={} for w in string.gmatch(s, "[^%s]+") do table.insert(t, w) end return (table.unpack or unpack)(t) end
----
local function array(n, default_val)
    local metatables = {}
    if default_val ~= nil then
        metatables[1] = {__index = function() return default_val end}
    end
    for i=2,n do
        metatables[i] = {__index = function(parent, k)
            local child = setmetatable({}, metatables[i-1])
            rawset(parent, k, child)
            return child
        end}
    end
    return setmetatable({}, metatables[n])
end
----
local N = read.n()
local A, B, C = {}, {}, {}
for i=1,N do
    A[i], B[i], C[i] = read.nnn()
end
local tbl = array(2, 0)
local a, b, c = 1, 2, 3
tbl[1][a] = A[1]
tbl[1][b] = B[1]
tbl[1][c] = C[1]
for i=1,N-1 do
    tbl[i+1][a] = math.max(tbl[i][b]+A[i+1], tbl[i][c]+A[i+1])
    tbl[i+1][b] = math.max(tbl[i][a]+B[i+1], tbl[i][c]+B[i+1])
    tbl[i+1][c] = math.max(tbl[i][a]+C[i+1], tbl[i][b]+C[i+1])
end
print(math.max(tbl[N][a], tbl[N][b], tbl[N][c]))