#include<iostream>
using namespace std;
// 标记数组
bool vis[55][55];
// 地图数组
bool mp[55][55];
// 偏移数组:上下左右
int dx[4] = {0,-1,0,1};
int dy[4] = {-1,0,1,0};
// 路径数组
int res[230][2]; // res[i][0] = x, res[i][1] = y
// 地图大小
int n, m;
// 起点 终点
int sx,sy, ex,ey;
int ans = 0;
// dfs(x,y,t)从(x,y)出发走到终点有多少种方案,t表示当前是第几步
void dfs(int x, int y, int t){
// 递归边界:走到终点
if(x==ex && y==ey){
ans++;
for(int i=1;i<t;i++){
printf("(%d,%d)->", res[i][0], res[i][1]);
}
printf("(%d,%d)\n", x, y);
return;
}
vis[x][y] = 1;
res[t][0] = x;
res[t][1] = y;
// 搜索可以走的方向
for(int i=0;i<4;i++){
int xx = x + dx[i];
int yy = y + dy[i];
// 可行性验证
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]==1&&vis[xx][yy]==0){
dfs(xx, yy, t+1);
}
}
vis[x][y] = 0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
cin>>sx>>sy>>ex>>ey;
dfs(sx,sy, 1);
if(ans == 0) cout<<-1;
return 0;
}