// #define _GLIBCXX_DEBUG #include using namespace std; #include using namespace atcoder; using ll = long long; using vi = vector; using vvi = vector>; using pii = pair; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define repr(i, n) for (int i = (int)(n - 1); i >= 0; --i) int main() { int n, m; cin >> n >> m; vvi a(n, vi(m)); rep(i, n) rep(j, m) cin >> a[i][j]; if (n == 1) { cout << 0 << endl; } else { vector> dp(n + 1, vector(m)); rep(i, n) { rep(j, m) dp[i + 1][j] = dp[i][j] + a[i][j]; ll mi = *min_element(dp[i + 1].begin(), dp[i + 1].end()); rep(j, m) dp[i + 1][j] = min(dp[i + 1][j], mi + a[i][j]); } ll ret = *min_element(dp[n].begin(), dp[n].end()); cout << ret << endl; } return 0; }