#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<algorithm>
using namespace std;
typedef long long ll;
int flag=0;
int m,n,sx,sy,ex,ey,k;
int a[20][20];
bool mark[20][20];//标记是否走过
int p[1001][2];//储存走的路径
int pd;
int dx[4]={0,-1,0,1};//方向,左上右下
int dy[4]={-1,0,1,0};//同上
void dfs(int x, int y)
{
if(x==ex && y==ey)
{
flag=1;
for(int i=0;i<k;i++)
{
//printf("(%d,%d)->", p[i][0],p[i][1]);
cout<<"("<<p[i][0]<<","<<p[i][1]<<")"<<"->";
}
cout<<"("<<ex<<","<<ey<<")"<<endl;
return ;
}
else
{
for(int i=0;i<=3;i++)
{
//迷宫中能走并且没有走过
if(a[x+dx[i]][y+dy[i]] && mark[x+dx[i]][y+dy[i]]==0)
{
mark[x][y]=1;//标记走过
p[k][0]=x;//储存走的路径
p[k][1]=y;
k++;//步数增加
dfs(x+dx[i],y+dy[i]);
mark[x][y]=0;//回溯,没有走过
k--;//步数减少
}
}
}
}
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
cin>>sx>>sy;
cin>>ex>>ey;
dfs(sx, sy);
if(flag==0)
cout<<-1<<endl;
//system("pause");
}