import sys,random,bisect from collections import deque,defaultdict import heapq from itertools import permutations from math import gcd input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) INF = 10**17 H,W,s,t = mi() A = [li() for i in range(H)] s,t = s-1,t-1 move = [(-1,0),(1,0),(0,1),(0,-1)] tmp = A[s][t] pq = [] insert = [[False]*W for i in range(H)] insert[s][t] = True for x,y in move: nx,ny = x+s,y+t if 0 <= nx < H and 0 <= ny < W: heapq.heappush(pq,(A[nx][ny],nx,ny)) insert[nx][ny] = True while pq: val,x,y = heapq.heappop(pq) if val < tmp: tmp += val for dx,dy in move: nx,ny = x+dx,y+dy if 0 <= nx < H and 0 <= ny < W and not insert[nx][ny]: heapq.heappush(pq,(A[nx][ny],nx,ny)) insert[nx][ny] = True else: print("No") break else: print("Yes")