#include using namespace std; using Int = long long; template inline void chmin(T1 &a,T2 b){if(a>b) a=b;} template inline void chmax(T1 &a,T2 b){if(a vector make_v(size_t a){return vector(a);} template auto make_v(size_t a,Ts... ts){ return vector(ts...))>(a,make_v(ts...)); } template typename enable_if::value!=0>::type fill_v(U &u,const V... v){u=U(v...);} template typename enable_if::value==0>::type fill_v(U &u,const V... v){ for(auto &e:u) fill_v(e,v...); } //INSERT ABOVE HERE signed main(){ Int n,v,sx,sy; cin>>n>>v>>sx>>sy; sx--;sy--; auto ls=make_v(n,n); for(Int i=0;i>ls[i][j]; auto dp=make_v(2,n,n); fill_v(dp,0); using T = tuple; queue qu; dp[0][0][0]=v; qu.emplace(0,0,0); auto in=[&](Int y,Int x){return 0<=y&&y0); if(!f&&y==sy&&x==sx&&dp[1][y][x]=dp[f][y][x]-ls[ny][nx]) continue; if(dp[f][y][x]-ls[ny][nx]<=0) continue; dp[f][ny][nx]=dp[f][y][x]-ls[ny][nx]; qu.emplace(f,ny,nx); } } cout<<(max(dp[0][n-1][n-1],dp[1][n-1][n-1])>0?"YES":"NO")<