typedef long long ll; typedef long double ld; #include using namespace std; #define int long long signed main(){ ll h,w; std::cin >> h>>w; h-=2; vector> a(h,vector(w)); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { std::cin >> a[i][j]; } } vector> dis(h,vector(w,1e18)); using P = pair>; priority_queue,greater

> pq; for (int i = 0; i < h; i++) { if(a[i][0]==-1)continue; dis[i][0] = a[i][0]; pq.push({dis[i][0], {i,0}}); } while(!pq.empty()){ auto [d, p] = pq.top();pq.pop(); auto [i,j] = p; if(dis[i][j]=h||j+y<0||j+y>=w)continue; if(a[i+x][j+y]==-1)continue; if(dis[i+x][j+y]>d+a[i+x][j+y]){ dis[i+x][j+y] = d+a[i+x][j+y]; pq.push({dis[i+x][j+y], {i+x, j+y}}); } } } } ll ans = 1e18; for (int i = 0; i < h; i++) { ans = min(ans, dis[i][w-1]); } if(ans==1e18){ std::cout << -1 << std::endl; }else{ std::cout << ans << std::endl; } }