#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
#define faster() ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
const int MOD = 1e9 + 7 ;
int n , m ;
typedef pair<int,pair<int,int>> iii ;
int a[505][505];
int d[505][505];
int dx[4] = {-1, +0, +1, 0};
int dy[4] = {+0, -1, +0, 1};
void Dijkstra(int i ,int j){
d[i][j] = a[i][j] ; //ban dau chi phi duong di la a[i][j]
priority_queue<iii , vector<iii> , greater<iii>> Q ;
Q.push({a[i][j] , {i , j}});
while(!Q.empty()){
iii p = Q.top() ; Q.pop();
int i1 = p.second.first ;
int j1 = p.second.second;
int chiPhi = p.first;
if(chiPhi > d[i1][j1]) continue ;
for(int k = 0 ; k < 4 ; k++){
int i2 = i1 + dx[k], j2 = j1 + dy[k];
if(i2 >=1 && i2 <= n && j2 >= 1 && j2 <= m){
if(d[i2][j2] > d[i1][j1] + a[i2][j2]){
d[i2][j2] = d[i1][j1] + a[i2][j2];
Q.push({d[i2][j2], {i2 , j2}});
}
}
}
}
cout << d[n][m] ;
// for(int i = 1 ; i <= n ; i++){
// for(int j = 1 ; j <= m ; j++){
// cout << d[i][j] << " ";
// }
// cout << endl;
// }
}
void solve(){
cin >> n >> m ;
for(int i = 1 ; i <= n ; i++){
for(int j = 1 ; j <= m ; j++){
cin >> a[i][j];
d[i][j] = 1e9 ;
}
}
Dijkstra(1 , 1);
}
signed main() {
faster();
int test = 1 ;
// cin >> test ;
while(test--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGZhc3RlcigpIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3IDsKCmludCBuICAsIG0gIDsKdHlwZWRlZiBwYWlyPGludCxwYWlyPGludCxpbnQ+PiBpaWkgOwppbnQgYVs1MDVdWzUwNV07CmludCBkWzUwNV1bNTA1XTsKCmludCBkeFs0XSA9IHstMSwgKzAsICsxLCAwfTsKaW50IGR5WzRdID0geyswLCAtMSwgKzAsIDF9OwoKdm9pZCBEaWprc3RyYShpbnQgaSAsaW50IGopewogICAgZFtpXVtqXSA9IGFbaV1bal0gOyAvL2JhbiBkYXUgY2hpIHBoaSBkdW9uZyBkaSBsYSBhW2ldW2pdCiAgICBwcmlvcml0eV9xdWV1ZTxpaWkgLCB2ZWN0b3I8aWlpPiAsIGdyZWF0ZXI8aWlpPj4gUSA7CiAgICBRLnB1c2goe2FbaV1bal0gLCB7aSAsIGp9fSk7IAogICAgd2hpbGUoIVEuZW1wdHkoKSl7CiAgICAgICAgaWlpIHAgPSBRLnRvcCgpIDsgUS5wb3AoKTsgCiAgICAgICAgaW50IGkxID0gcC5zZWNvbmQuZmlyc3QgOwogICAgICAgIGludCBqMSA9IHAuc2Vjb25kLnNlY29uZDsKICAgICAgICBpbnQgY2hpUGhpID0gcC5maXJzdDsKICAgICAgICBpZihjaGlQaGkgPiBkW2kxXVtqMV0pIGNvbnRpbnVlIDsKICAgICAgICBmb3IoaW50IGsgPSAwIDsgayA8IDQgOyBrKyspewogICAgICAgICAgICBpbnQgaTIgPSBpMSArIGR4W2tdLCBqMiA9IGoxICsgZHlba107CiAgICAgICAgICAgIGlmKGkyID49MSAmJiBpMiA8PSBuICYmIGoyID49IDEgJiYgajIgPD0gbSl7CiAgICAgICAgICAgICAgICBpZihkW2kyXVtqMl0gPiBkW2kxXVtqMV0gKyBhW2kyXVtqMl0pewogICAgICAgICAgICAgICAgICAgIGRbaTJdW2oyXSA9IGRbaTFdW2oxXSArIGFbaTJdW2oyXTsKICAgICAgICAgICAgICAgICAgICBRLnB1c2goe2RbaTJdW2oyXSwge2kyICwgajJ9fSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGRbbl1bbV0gOwogICAgLy8gZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKyl7CiAgICAvLyAgICAgZm9yKGludCBqID0gMSA7IGogPD0gbSA7IGorKyl7CiAgICAvLyAgICAgICAgIGNvdXQgPDwgZFtpXVtqXSA8PCAiICI7CiAgICAvLyAgICAgfQogICAgLy8gICAgIGNvdXQgPDwgZW5kbDsKICAgIC8vIH0KfQoKdm9pZCBzb2x2ZSgpewogICAgY2luID4+IG4gPj4gbSA7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAxIDsgaiA8PSBtIDsgaisrKXsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgICAgIGRbaV1bal0gPSAxZTkgOwogICAgICAgIH0KICAgIH0KICAgIERpamtzdHJhKDEgLCAxKTsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBmYXN0ZXIoKTsgCiAgICBpbnQgdGVzdCA9IDEgOyAKICAgIC8vIGNpbiA+PiB0ZXN0IDsKICAgIHdoaWxlKHRlc3QtLSkgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0KCgoKCgoK