#include <bits/stdc++.h> using namespace std; using ch = char; using ll = long long; using ld = long double; using db = double; using st = string; using vdb = vector<db>; using vvdb = vector<vdb>; using vl = vector<ll>; using vvl = vector<vl>; using vvvl = vector<vvl>; using vd = vector<ld>; using vvd = vector<vd>; using vs = vector<st>; using vvs = vector<vs>; using vc = vector<ch>; using vvc = vector<vc>; using vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>; const ll mod = 998244353; const ll MOD = 1000000007; using vp = vector<pair<ll,ll>>; #define fi first #define se second int main(){ ll H,W; cin>>H>>W; vvc X(H,vc(W)); for(int i=0; i<H; i++){ for(int j=0; j<W; j++) cin>>X[i][j]; } vvs A(2,vs(W)); A[0][0]=X[0][0]; for(int i=1; i<W; i++){ A.at(0).at(i)=A.at(0).at(i-1)+X.at(0).at(i); } for(int i=1; i<H; i++){ A.at(1).at(0)=A.at(1).at(0)+X.at(i).at(0); for(int j=1; j<W; j++){ st b=min(A.at(0).at(j),A.at(1).at(j-1)); A.at(1).at(j)=b+X.at(i).at(j); } for(int j=0; j<W; j++) A.at(0).at(j)=A.at(1).at(j); } cout<<A.at(0).at(W-1)<<endl; }