#include using namespace std; //#include //using namespace atcoder; using ll=long long; using Graph=vector>; #define MAX 1000000 #define MOD 1000000007 //#define MOD 998244353 #define INF 1000000000 //#define INF 1000000000000000000 int main(){ int N,V,Ox,Oy; cin>>N>>V>>Ox>>Oy; vector> L(N,vector(N)); for(int i=0;i>L[i][j]; } } priority_queue,vector>,greater>> pq; vector> dist(N,vector(N,INF)); dist[0][0]=0; pq.push(make_pair(dist[0][0],0)); int di[4]={1,0,-1,0}; int dj[4]={0,1,0,-1}; while(!pq.empty()){ int v=pq.top().second; int d=pq.top().first; pq.pop(); int i=v/N; int j=v%N; if(dist[i][j]=N||nj>=N){ continue; } if(dist[ni][nj]>dist[i][j]+L[ni][nj]){ dist[ni][nj]=dist[i][j]+L[ni][nj]; pq.push(make_pair(dist[ni][nj],ni*N+nj)); } } } if(dist[N-1][N-1]=N||nj>=N){ continue; } if(dist[ni][nj]>dist[i][j]+L[ni][nj]){ dist[ni][nj]=dist[i][j]+L[ni][nj]; pq.push(make_pair(dist[ni][nj],ni*N+nj)); } } } if(dist[N-1][N-1]