#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define ll long long
const ll INF = 1e18;
struct Edge {
int to;
ll weight;
Edge(int t, ll w) : to(t), weight(w) {}
};
vector<vector<Edge>> adj;
vector<ll> dist;
vector<ll>parent;
ll cnt=1;
void dijkstra(int n, int source) {
dist.assign(n + 1, INF);
parent.assign(n+1,-1);
priority_queue<
pair<ll,int>,
vector<pair<ll,int>>,
greater<pair<ll,int>>
> pq;
dist[source] = 0;
parent[source]=0;
pq.push({0, source});
while (!pq.empty()) {
ll d = pq.top().first;
int u = pq.top().second;
pq.pop();
if (d > dist[u]) continue;
for (const Edge &e : adj[u]) {
int v = e.to;
ll w = e.weight;
if(dist[v]==dist[u]+w){
cnt++;
}
if (dist[v] > dist[u] + w) {
dist[v] = dist[u] + w;
parent[v]=u;
pq.push({dist[v], v});
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
adj.resize(m*n+5);
int arr1[2]={1,0};
int arr2[2]={0,1};
vector<int>arr(n*m+5);
for(int j=0;j<n;j++){
for (int i=0;i<m;i++){
int cord=j*m+i;
cin>>arr[cord];
}
}
for(int j=0;j<n;j++){
for(int i=0;i<m;i++){
int cord=j*m+i;
for(int k=0;k<2;k++){
int dx=j+arr1[k];
int dy=i+arr2[k];
if(dx>=n||dx<0||dy>=m||dy<0)continue;
int cord2=dx*m+dy;
adj[cord].emplace_back(cord2,arr[cord2]);
}
}
}
int source=0;
dijkstra(n*m,source);
if(parent[n*m-1]==-1){
cout<<-1<<"\n";
}
else{
cout<<dist[n*m-1]+arr[0]<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBsbCBsb25nIGxvbmcKY29uc3QgbGwgSU5GID0gMWUxODsKc3RydWN0IEVkZ2UgewogICAgaW50IHRvOwogICAgbGwgd2VpZ2h0OwogICAgRWRnZShpbnQgdCwgbGwgdykgOiB0byh0KSwgd2VpZ2h0KHcpIHt9Cn07CnZlY3Rvcjx2ZWN0b3I8RWRnZT4+IGFkajsKdmVjdG9yPGxsPiBkaXN0Owp2ZWN0b3I8bGw+cGFyZW50OwpsbCBjbnQ9MTsKdm9pZCBkaWprc3RyYShpbnQgbiwgaW50IHNvdXJjZSkgewogICAgZGlzdC5hc3NpZ24obiArIDEsIElORik7CiAgICBwYXJlbnQuYXNzaWduKG4rMSwtMSk7CiAgICBwcmlvcml0eV9xdWV1ZTwKICAgICAgICBwYWlyPGxsLGludD4sCiAgICAgICAgdmVjdG9yPHBhaXI8bGwsaW50Pj4sCiAgICAgICAgZ3JlYXRlcjxwYWlyPGxsLGludD4+CiAgICA+IHBxOwoKICAgIGRpc3Rbc291cmNlXSA9IDA7CiAgICBwYXJlbnRbc291cmNlXT0wOwogICAgcHEucHVzaCh7MCwgc291cmNlfSk7CgogICAgd2hpbGUgKCFwcS5lbXB0eSgpKSB7CiAgICAgICAgbGwgZCA9IHBxLnRvcCgpLmZpcnN0OwogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2Vjb25kOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZiAoZCA+IGRpc3RbdV0pIGNvbnRpbnVlOwoKICAgICAgICBmb3IgKGNvbnN0IEVkZ2UgJmUgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSBlLnRvOwogICAgICAgICAgICBsbCB3ID0gZS53ZWlnaHQ7CiAgICAgICAgICAgICBpZihkaXN0W3ZdPT1kaXN0W3VdK3cpewogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkaXN0W3ZdID4gZGlzdFt1XSArIHcpIHsKICAgICAgICAgICAgICAgIGRpc3Rbdl0gPSBkaXN0W3VdICsgdzsKICAgICAgICAgICAgICAgIHBhcmVudFt2XT11OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZGlzdFt2XSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKCiAgICBhZGoucmVzaXplKG0qbis1KTsKICAgIGludCBhcnIxWzJdPXsxLDB9OwogICAgaW50IGFycjJbMl09ezAsMX07CiAgICB2ZWN0b3I8aW50PmFycihuKm0rNSk7CiAgIGZvcihpbnQgaj0wO2o8bjtqKyspewogICAgZm9yIChpbnQgaT0wO2k8bTtpKyspewogICAgICAgIGludCBjb3JkPWoqbStpOwogICAgICAgIGNpbj4+YXJyW2NvcmRdOwogICAgfQp9CiAgICBmb3IoaW50IGo9MDtqPG47aisrKXsKICAgICAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICAgICAgaW50IGNvcmQ9aiptK2k7CiAgICAgICAgIGZvcihpbnQgaz0wO2s8MjtrKyspewogICAgICAgICAgICBpbnQgZHg9aithcnIxW2tdOwogICAgICAgICAgICBpbnQgZHk9aSthcnIyW2tdOwogICAgICAgICAgICBpZihkeD49bnx8ZHg8MHx8ZHk+PW18fGR5PDApY29udGludWU7CiAgICAgICAgICAgIGludCBjb3JkMj1keCptK2R5OwogICAgICAgICAgICBhZGpbY29yZF0uZW1wbGFjZV9iYWNrKGNvcmQyLGFycltjb3JkMl0pOwogICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbnQgc291cmNlPTA7CgogICBkaWprc3RyYShuKm0sc291cmNlKTsKCiAgICBpZihwYXJlbnRbbiptLTFdPT0tMSl7CiAgICAgIGNvdXQ8PC0xPDwiXG4iOwogICAgfQogICAgZWxzZXsKICAgICAgICBjb3V0PDxkaXN0W24qbS0xXSthcnJbMF08PCJcbiI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=