#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; // using mint=modint998244353; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n,v,sx,sy,gx,gy; cin>>n>>v>>sx>>sy>>gx>>gy; --sx,--sy,--gx,--gy; vvi L(n,vi(n)); rep(i,0,n)rep(j,0,n)cin>>L[j][i]; int d=abs(sx-gx)+abs(sy-gy); if(v>9*d){ cout<> q; q.push({sx,sy,0}); int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; while(!q.empty()){ auto [x,y,t]=q.front(); q.pop(); if(x==gx&&y==gy){ cout<=n||ny<0||ny>=n)continue; int cost=best[x][y]+L[nx][ny]; if(cost