#https://atcoder.jp/contests/dp/tasks/dp_c

N = int(eval(input()))



p = [list(map(int,input().split())) for l in range(N)]

dp = [[0,0,0]]*N

dp[0] = p[0]



for i in range(1,N,1):

    dp[i] = [0,0,0]#この文がないとバグる、理由はわからん

    #print(dp)

    for j in range(3):

        for k in range(3):

            if k != j:

                dp[i][j] = max(dp[i][j],dp[i-1][k] + p[i][j])

                #print(i,j,dp[i][j])





print((max(max(dp))))
#動的計画法

#C - Vacation

#aのところをdp[i][0]とするとなぜか事故る、そういう仕様なのか？、それどもdp = [[0,0,0]]*Nが影響しているのか

N = int(eval(input()))

H = [list(map(int,input().split())) for i in range(N)]

dp = [[0,0,0]]*N

dp[0] = H[0]

for i in range(1,N):

    a = max(dp[i-1][1],dp[i-1][2])+H[i][0]

    b = max(dp[i-1][0],dp[i-1][2])+H[i][1]

    c = max(dp[i-1][0],dp[i-1][1])+H[i][2]

    dp[i] = [a,b,c]

print((max(dp[N-1])))
# https://atcoder.jp/contests/dp/tasks/dp_c
N = int(eval(input()))
p = [list(map(int, input().split())) for l in range(N)]
dp = [[0, 0, 0]] * N
dp[0] = p[0]
for i in range(1, N, 1):
    dp[i] = [0, 0, 0]  # この文がないとバグる、理由はわからん
    # print(dp)
    for j in range(3):
        for k in range(3):
            if k != j:
                dp[i][j] = max(dp[i][j], dp[i - 1][k] + p[i][j])
                # print(i,j,dp[i][j])
print((max(max(dp))))

# 動的計画法
# C - Vacation
# aのところをdp[i][0]とするとなぜか事故る、そういう仕様なのか？、それどもdp = [[0,0,0]]*Nが影響しているのか
N = int(eval(input()))
H = [list(map(int, input().split())) for i in range(N)]
dp = [[0, 0, 0]] * N
dp[0] = H[0]
for i in range(1, N):
    a = max(dp[i - 1][1], dp[i - 1][2]) + H[i][0]
    b = max(dp[i - 1][0], dp[i - 1][2]) + H[i][1]
    c = max(dp[i - 1][0], dp[i - 1][1]) + H[i][2]
    dp[i] = [a, b, c]
print((max(dp[N - 1])))

-# https://atcoder.jp/contests/dp/tasks/dp_c +# 動的計画法 +# C - Vacation +# aのところをdp[i][0]とするとなぜか事故る、そういう仕様なのか？、それどもdp = [[0,0,0]]*Nが影響しているのか -p = [list(map(int, input().split())) for l in range(N)] +H = [list(map(int, input().split())) for i in range(N)] -dp[0] = p[0] -for i in range(1, N, 1): -    dp[i] = [0, 0, 0]  # この文がないとバグる、理由はわからん -    # print(dp) -    for j in range(3): -        for k in range(3): -            if k != j: -                dp[i][j] = max(dp[i][j], dp[i - 1][k] + p[i][j]) -                # print(i,j,dp[i][j]) -print((max(max(dp)))) +dp[0] = H[0] +for i in range(1, N): +    a = max(dp[i - 1][1], dp[i - 1][2]) + H[i][0] +    b = max(dp[i - 1][0], dp[i - 1][2]) + H[i][1] +    c = max(dp[i - 1][0], dp[i - 1][1]) + H[i][2] +    dp[i] = [a, b, c] +print((max(dp[N - 1])))