
import sys
input = sys.stdin.readline
N = int(input())
price = [[0] * N for _ in range(N)]
for i in range(N):
price[i] = (list(map(int, input().split())))
for i in range(1, N):
price[i][0] = min(price[i-1][1], price[i-1][2]) + price[i][0]
price[i][1] = min(price[i-1][0], price[i-1][2]) + price[i][1]
price[i][2] = min(price[i-1][0], price[i-1][1]) + price[i][2]
print(min(price[N-1]))
arr=[[0]*3]*3이렇게 쓰면 arr[0][1], arr[1][1], arr[2][1]는 모두 같은 객체를 가리키게 되어 arr[0][1] 값을 바꾸면 arr[1][1], arr[2][1]도 같이 바뀌게 된다.음 근데 이건 1차원 배열에서도 마찬가지 아닝가..?
'* 연산자'가 단순 얕은 복사라면 1차원 배열도 같은 리스트를 가리켜서 arr[0]을 바꾸면 arr[1]도 바뀌는 식으로,,, 라고 생각했는데,..!! 더 찾아보니까
arr=[0]*3
이런 식으로 선언하면 0은 숫자 즉, 불변 객체이기 때문에 문제가 없고,
arr=[[0]*3]*3
이렇게 쓰면 각 요소가 모두 같은 리스트(가변 객체)를 참조하기 때문에 문제가 되는 것이다!!!!
price = [0] * N
price[i] = (list(map(int, input().split())))
이렇게 쓰면 각 값들이 리스트로 바뀌게 되어 2차원 배열이 되는 것이다.
