from collections import deque
n, s, v1, v2 = map(int, input().split())
s -= 1
v1 -= 1
v2 -= 1
graph = [list(map(int, input().split())) for _ in range(n)]
# BFS
dist = [float('inf')] * n
dist[s] = 0
queue = deque([s])
while queue:
u = queue.popleft()
for v in range(n):
if graph[u][v] == 1 and dist[v] == float('inf'):
dist[v] = dist[u] + 1
queue.append(v)
# учитываем секретный ход
d1 = min(dist[v1], 10000)
d2 = min(dist[v2], 10000)
# ответ
print(1 if d1 < d2 else 0)