using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; using nint=System.Int32; static class Program{ const int mod=(int)1e9+7; static readonly int[][] di1=new int[][]{new int[]{-1,0},new int[]{1,0},new int[]{0,-1},new int[]{0,1}}; static readonly int[][] di2=new int[][]{new int[]{-1,-1},new int[]{-1,0},new int[]{-1,1},new int[]{0,-1},new int[]{0,1},new int[]{1,-1},new int[]{1,0},new int[]{1,1}}; static void Main(){ Sc sc=new Sc(); var s=sc.Ia; int h=s[0],w=s[0]; var bm=new int[h+2][]; var b=new bool[h+2][]; var c=new int[h+2][]; var d=new int[h+2][]; var qu=new Queue>(); for(int i = 1;i<=h;i++) { bm[i]=sc.Ia3(true,-1,true,-1); c[i]=new int[w+2]; d[i]=new int[w+2]; b[i]=new bool[w+1]; for(int j = 1;j<=w;j++) {c[i][j]=d[i][j]=mod;} } bm[0]=bm[h+1]=Enumerable.Repeat(-1,w+2).ToArray(); c[0]=c[h+1]=d[0]=d[h+1]=new int[w+2]; var pq=new Rheap>(32); pq.Push(new Rheap>.Dt(0,Tuple.Create(1,1))); while(pq.cnt>0){ var e=pq.Dequeue; if(b[e.d.Item1][e.d.Item2]){continue;} b[e.d.Item1][e.d.Item2]=true; Fdi(e.d.Item1,e.d.Item2,(y,x)=>{ if(bm[y][x]!=-1&&c[y][x]>e.n+bm[y][x]){ pq.Push(new Rheap>.Dt(e.n+bm[y][x],Tuple.Create(y,x))); c[y][x]=e.n+bm[y][x]; } }); } if(s[2]==0){ Console.WriteLine("{0}",c[s[0]][s[0]]>(32); pq.Push(new Rheap>.Dt(0,Tuple.Create(s[3],s[2]))); while(pq.cnt>0){ var e=pq.Dequeue; if(b[e.d.Item1][e.d.Item2]){continue;} b[e.d.Item1][e.d.Item2]=true; Fdi(e.d.Item1,e.d.Item2,(y,x)=>{ if(bm[y][x]!=-1&&d[y][x]>e.n+bm[y][x]){ pq.Push(new Rheap>.Dt(e.n+bm[y][x],Tuple.Create(y,x))); d[y][x]=e.n+bm[y][x]; } }); } Console.WriteLine("{0}",(c[s[0]][s[0]]c[s[3]][s[2]]&&((s[1]-c[s[3]][s[2]])<<1)-d[s[0]][s[0]]>0))?"YES":"NO"); } static void Fdi(int y,int x,Action f){for(int i=0;i<4;i++){f(y+di1[i][0],x+di1[i][1]);}} } public class Rheap{ public class Dt{ public nint n; public T d; public Dt(nint n,T d){this.n=n;this.d=d;} public override string ToString()=>"d:"+d.ToString()+" n:"+n.ToString(); } private const int m=33; private nint la=0; private Dt[][] bf; private int[] h; public int cnt=0; public Rheap(int max){ bf=new Dt[m][]; h=new int[m]; for(int i = 0;i0){ int p=0; for(int j = 1;jbf[i][j].n){p=j;} } la=bf[i][p].n; for(int j = 0;j(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i