import sys
sys.setrecursionlimit(1e4)
N,M = map(int, input().split())
r,c,d = map(int,input().split())
board = []
for _ in range(N):
board.append(list(map(int,input().split())))
class Robot:
def __init__(self,r,c,d, board):
self.r = r
self.c = c
self.head = d
self.directions = [[-1,0],[0,1],[1,0],[0,-1]]
self.board = board
self.cleaned = [[0]*len(board[0]) for _ in range(len(board))]
def rot(self):
self.head = (self.head + 1) % 4
def iscollide(self,head):
dr,dc = self.directions[head%4]
nr, nc = self.r+dr, self.c+dc
if 0<=nr<N and 0<=nc<M:
if self.board[nr][nc]==0:
return False
return True
def iscleaned(self,head):
dr,dc = self.directions[head%4]
nr, nc = self.r+dr, self.c+dc
if 0<=nr<N and 0<=nc<M:
if self.cleaned[nr][nc]==0:
return False
return True
def count(self):
result = 0
for i in self.cleaned:
result += sum(i)
return result
def move_once(self, head):
dr, dc = self.directions[head]
self.r, self.c = self.r + dr, self.c + dc
def move1(self):
self.cleaned[self.r][self.c] = 1
self.move2()
def move2(self):
if not (self.iscollide(self.head-1) or self.iscleaned(self.head-1)):
self.head = (self.head-1) % 4
self.move_once(self.head)
self.move1()
else:
for i in range(4):
self.head = (self.head-1) % 4
if not (self.iscollide(self.head-1) or self.iscleaned(self.head-1)):
break
if i != 3:
self.move2()
else:
if not self.iscollide(self.head-2):
self.move_once(self.head-2)
self.move2()
else:
return
robot = Robot(r,c,d,board)
robot.move1()
print(robot.count())