## DP
T = int(input())
cost = [list(map(int,input().split())) for _ in range(T)]
# cost = [[26,40,83],[49,60,57],[13,89,99]]
color = [[0]*3 for _ in range(T)]
color[0] = cost[0]
# color = [[26,40,83],[0,0,0],[0,0,0]]
for i in range(1,T):
color[i][0] = cost[i][0]+ min(color[i-1][1],color[i-1][2]) #[49+40, 0, 0] /
color[i][1] = cost[i][1]+ min(color[i-1][0],color[i-1][2]) #[40+49, 60+26, 0]
color[i][2] = cost[i][2]+ min(color[i-1][0],color[i-1][1]) #[40+49, 60+26, 57+26]
print(min(color[-1]))
문제를 푸는 시선을 살짝만 바꾸면 되는 문제다 (사실 난 DP 자체가 접근을 시도하는 값/요소에 변화를 줘야하는 알고리즘이라 생각하고 있다)위에서 아래로 차례대로 더해간다기보다는, 어느 좌표에 놓인 값들([i,0], [i,1], [i,2])마다 경우를 나누어 계산했다.포인트가 되는 부분은 for문 속 min()이라 생각한다.아래 포스팅은 프로그래머스에서 출제된 문제였는데, 비슷한 문제로 보여서 첨부한다.