# include<bits/stdc++.h>
using namespace std;
int v , b , m , n , start_1 , start_2 , end_1 , end_2 , record_1[15] , record_2[15] , maze[15][15] , temp[15][15];
void dfs(int strat_1 , int start_2) {
if (start_1 == end_1 && start_2 == end_2) {
v = 1;
for (int q = 0 ; q <= b ; q++) {
cout << "(" << record_1[q] << "," << record_2[q] << ")" << "->";
}
cout << "(" << end_1 << "," << end_2 << ")" << endl;
return;
}
else {
if (maze[start_1][start_2 - 1] == 1) {
record_1[b] = start_1;
record_2[b] = start_2;
maze[start_1][start_2] = 0;
b++;
dfs(start_1 , start_2 - 1);
maze[start_1][start_2] = 1;
b--;
}
if (maze[start_1 + 1][start_2] == 1) {
record_1[b] = start_1;
record_2[b] = start_2;
maze[start_1][start_2] = 0;
b++;
dfs(start_1 + 1 , start_2);
maze[start_1][start_2] = 1;
b--;
}
if (maze[start_1][start_2 + 1] == 1) {
record_1[b] = start_1;
record_2[b] = start_2;
maze[start_1][start_2] = 0;
b++;
dfs(start_1 , start_2 + 1);
maze[start_1][start_2] = 1;
b--;
}
if (maze[start_1 - 1][start_2] == 1) {
record_1[b] = start_1;
record_2[b] = start_2;
maze[start_1][start_2] = 0;
b++;
dfs(start_1 - 1 , start_2);
maze[start_1][start_2] = 1;
b--;
}
}
}
int main() {
cin >> m >> n;
for (int q = 1 ; q <= m ; q++) {
for (int w = 1 ; w <= n ; w++) {
cin >> maze[q][w];
}
}
cin >> start_1 >> start_2 >> end_1 >> end_2;
dfs(start_1 , start_2);
if (v == 0) cout << "-1";
return 0;
}