#include // #include // #include using namespace std; // using namespace atcoder; // using bint = boost::multiprecision::cpp_int; using ll = long long; using ull = unsigned long long; using P = pair; #define rep(i,n) for(ll i = 0;i < (ll)n;i++) #define ALL(x) (x).begin(),(x).end() #define MOD 1000000007 // #define MOD 998244353 int main(){ int n,m; cin >> n >> m; vector> a(n,vector(m)); rep(i,n)rep(j,m)cin >> a[i][j]; if(n == 1){ cout << "0\n"; return 0; } vector dp(m); rep(i,m)dp[i] = a[0][i]; for(int i = 1;i < n;i++){ vector DP(m); ll k = *min_element(ALL(dp)); rep(j,m)DP[j] = min(k + a[i][j] + a[i-1][j],dp[j] + a[i][j]); swap(dp,DP); } cout << *min_element(ALL(dp)) << "\n"; return 0; }