#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<long long>> a(n, vector<long long>(m));
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j) cin >> a[i][j];

    const long long INF = (1LL << 60);
    vector<long long> dp(m + 1, INF);   // dp[j]:从 (i,j) 到终点至少需要的血量
    dp[m - 1] = 1;                      // 让右下角用统一转移计算一次

    for (int i = n - 1; i >= 0; --i) {
        dp[m] = INF;                    // 越界哨兵
        for (int j = m - 1; j >= 0; --j) {
            long long need = min(dp[j], dp[j + 1]);
            dp[j] = max(1LL, need - a[i][j]);
        }
    }
    cout << dp[0] << '\n';
    return 0;
}