#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
};
deque<node>s;
int m,n,xx,yy,xxx,yyy;
bool mp[16][16];
bool ans=0;
int dix[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
void dfs(int x,int y,int step){
if(x==xxx && y==yyy){
deque<node>s::iterator it;
for(it=s.begin(),it!=s.end()-1;it++)
cout<<"("<<*it.x<<","<<*it.y<<")->";
cout<<"("<<xxx<<","<<yyy<<")"<<endl;
ans=1;
return ;
}
for(int i=0;i<4;i++){
int nx=x+dix[i][0];
int ny=y+dix[i][1];
if(nx>0 && nx<=m && ny>0 && ny<=n && mp[nx][ny]==1){
mp[nx][ny]=0;
s.push_back({nx,ny});
dfs(nx,ny,step+1);
mp[nx][ny]=1;
s.pop_back();
}
}
}
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>mp[i][j];
cin>>xx>>yy>>xxx>>yyy;
dfs(xx,yy,0);
if(ans==0) cout<<-1;
return 0;
}