INF = 1 << 60 N, M = map(int, input().split()) A = [] for _ in range(N): A.append(list(map(int, input().split()))) if N == 1: print(0) exit() dp = [[INF] * M for _ in range(N+1)] for i in range(M): dp[0][i] = A[0][i] for i in range(N-1): mi = min(dp[i]) for j in range(M): # 乗り換えない dp[i+1][j] = min(dp[i+1][j], dp[i][j] + A[i+1][j]) # 乗り換える dp[i+1][j] = min(dp[i+1][j], mi + A[i][j] + A[i+1][j]) ans = min(dp[N-1]) print(ans)