import java.util.Scanner;
public class Main {
static int n, m;
static int barrier[][];
static boolean st[][];
static int endx, endy, res;
static int map[][], path[][];
static int dx[] = {0, -1, 0, 1},
dy[] = {-1, 0, 1, 0};
static void dfs(int x, int y, int num) {
for(int i = 0; i < 4; i++) {
int a = x + dx[i], b = y + dy[i];
if(a < 1 || a > n || b < 1 || b > m)
continue;
if(!st[a][b]) {
if(a == endx && b == endy) {
res += 1;
for(int k = 1; k < num; k++) {
System.out.print("(" + path[k][0] + "," + path[k][1] + ")->");
}
System.out.println("(" + endx + "," + endy + ")");
continue;
}
if(map[a][b] != 1)
continue;
st[a][b] = true;
path[num][0] = a;
path[num][1] = b;
dfs(a, b, num + 1);
st[a][b] =false;
path[num][0] = 0;
path[num][1] = 0;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
st = new boolean[n+1][m+1];
map = new int[n+1][m+1];
path = new int [1000000][2];
for(int i = 1; i < map.length; i++)
for(int j = 1; j < map[0].length; j++)
map[i][j] = sc.nextInt();
int startx, starty;
startx = sc.nextInt();
starty = sc.nextInt();
endx = sc.nextInt();
endy = sc.nextInt();
sc.close();
if(startx == endx && starty == endy) {
System.out.println(-1);
} else if(map[startx][starty] == 0 || map[endx][endy] == 0) {
System.out.println(-1);
} else {
st[startx][starty] = true;
path[1][0] = startx;
path[1][1] = starty;
dfs(startx, starty, 2);
if(res > 0) {
}
else {
System.out.println(-1);
}
}
}
}