#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;
}