import sys #input = sys.stdin.readline input = sys.stdin.buffer.readline #文字列はダメ #sys.setrecursionlimit(1000000) #import bisect #import itertools #import random from heapq import heapify, heappop, heappush #from collections import defaultdict #from collections import deque #import copy #import math #from functools import lru_cache #@lru_cache(maxsize=None) #MOD = pow(10,9) + 7 #MOD = 998244353 dx = [1,0,-1,0] dy = [0,1,0,-1] #dx8 = [1,1,0,-1,-1,-1,0,1] #dy8 = [0,1,1,1,0,-1,-1,-1] base = 505 def main(): H,W,Y,X = map(int,input().split()); INF = pow(10,18) X -= 1; Y -= 1 A = [list(map(int,input().split())) for _ in range(H)] PQ = [] heappush(PQ,Y*base+X) ok = [[0]*W for _ in range(H)] power = A[Y][X] while PQ: idx = heappop(PQ) y = idx//base x = idx%base #print(x,y,A[y][x]) if ok[y][x] == 1: continue if power < A[y][x]: continue ok[y][x] = 1 for d in range(4): ny = y + dy[d] nx = x + dx[d] if ny < 0 or ny >= H or nx < 0 or nx >= W: continue if ok[ny][nx] == 1: continue #既に倒している。 if A[ny][nx] < power: power += A[ny][nx] ok[ny][nx] = 1 for dd in range(4): nny = ny + dy[dd] nnx = nx + dx[dd] if nny < 0 or nny >= H or nnx < 0 or nnx >= W: continue if ok[nny][nnx] == 1: continue #既に倒している。 heappush(PQ, nny*base + nnx) else: heappush(PQ, ny*base + nx) #print(power) #print(ok) for i in range(H): for j in range(W): if ok[i][j] == 0: print('No') exit() print('Yes') if __name__ == '__main__': main()