RT
#include<iostream>
using namespace std;
int m,n;
bool map[15][15],v[15][15],flag=false;
struct node{
int x;
int y;
}ans[226];
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
int bx,by,ex,ey;
void out(int step){
cout<<"("<<bx<<","<<by<<")";
for(int i=1;i<=step;i++){
cout<<"->"<<"("<<ans[i].x<<","<<ans[i].y<<")";
}
cout<<endl;
}
void dfs(int step,int x,int y){
if(x==ex&&y==ey){
flag=true;
out(step-1);
return;
}
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(map[xx][yy]==true&&v[xx][yy]==false&&xx>=1&&xx<=n&&yy>=1&&yy<=m){
v[xx][yy]=true;
ans[step].x=xx;
ans[step].y=yy;
dfs(step+1,xx,yy);
v[xx][yy]=false;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>map[i][j];
}
}
cin>>bx>>by>>ex>>ey;
if(map[bx][by]==false||map[ex][ey]==false){
flag=false;
}
dfs(0,bx,by);
if(flag==false) cout<<"-1";
return 0;
}