#include <iostream>
using namespace std;
const int maxn = 100;
int n, m;
int map[maxn][maxn], sign[maxn][maxn];
int startx, starty, endx, endy;
int dir[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
bool law(int x, int y) {
if (x >= 0 && x < n && y >= 0 && y < m
&& map[x][y] == 0 && sign[x][y] == 0)
return 1;
return 0;
}
bool DFS(int x, int y) {
if (x == endx && y == endy)
return 1;
sign[x][y] = 1;
for (int i = 0; i < 4; ++i) {
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (law(nx, ny))
if (DFS(nx, ny))
return 1;
}
return 0;
}
int main() {
while (scanf("%d %d", &n, &m) != EOF) {
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
scanf("%d", &map[i][j]);
scanf("%d %d %d %d", &startx, &starty, &endx, &endy);
if (DFS(startx, starty))
printf("God bless me!\n");
else
printf("Oh, shit!\n");
}
return 0;
}
using namespace std;
const int maxn = 100;
int n, m;
int map[maxn][maxn], sign[maxn][maxn];
int startx, starty, endx, endy;
int dir[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
bool law(int x, int y) {
if (x >= 0 && x < n && y >= 0 && y < m
&& map[x][y] == 0 && sign[x][y] == 0)
return 1;
return 0;
}
bool DFS(int x, int y) {
if (x == endx && y == endy)
return 1;
sign[x][y] = 1;
for (int i = 0; i < 4; ++i) {
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (law(nx, ny))
if (DFS(nx, ny))
return 1;
}
return 0;
}
int main() {
while (scanf("%d %d", &n, &m) != EOF) {
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
scanf("%d", &map[i][j]);
scanf("%d %d %d %d", &startx, &starty, &endx, &endy);
if (DFS(startx, starty))
printf("God bless me!\n");
else
printf("Oh, shit!\n");
}
return 0;
}