#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b;
}z[250];
int mp[15][15],used[15][15],n,m,sx,sy,ex,ey,dx[4]={0,-1,0,1},dy[4]={-1,0,1,0},flag;
void prt(int l){
flag=1;
cout<<'('<<z[1].a<<','<<z[1].b<<')';
for(int i=2;i<l;i++)cout<<"->"<<'('<<z[i].a<<','<<z[i].b<<')';
cout<<endl;
return;
}
void dfs(long long step,int x0,int y0){
if(x0==ex&&y0==ey){prt(step);return;}
for(int i=0;i<=3;i++){
int x=x0+dx[i],y=y0+dy[i];
if(!used[x][y]&&mp[x][y]==1&&x<=n&&x>=1&&y<=m&&y>=1){
used[x][y]=1;
z[step].a=x;
z[step].b=y;
dfs(step+1,x,y);
used[x][y]=0;
}
}
return;
}
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;
used[sx][sy]=1;
z[1].a=sx;
z[1].b=sy;
dfs(2,1,1);
if(flag==0)cout<<-1;
return 0;
}