#include using namespace std; const long long INF = 1000000000000000; int main(){ int N, M; cin >> N >> M; vector> A(N, vector(M)); for (int i = 0; i < N; i++){ for (int j = 0; j < M; j++){ cin >> A[i][j]; } } if (N == 1){ cout << 0 << endl; } else { vector> dp(N, vector(M, INF)); for (int i = 0; i < M; i++){ dp[0][i] = A[0][i]; } for (int i = 0; i < N - 1; i++){ for (int j = 0; j < M; j++){ dp[i + 1][j] = min(dp[i + 1][j], dp[i][j] + A[i + 1][j]); } long long mn = INF; for (int j = 0; j < M; j++){ mn = min(mn, dp[i + 1][j]); } for (int j = 0; j < M; j++){ dp[i + 1][j] = min(dp[i + 1][j], mn + A[i + 1][j]); } } long long ans = INF; for (int i = 0; i < M; i++){ ans = min(ans, dp[N - 1][i]); } cout << ans << endl; } }