#include<iostream>
#include<stdio.h>
using namespace std;
int n,m,startx,starty,endx,endy,ansend=1;
struct ansxy{
int ansx;
int ansy;
}answer[50005];
int a[25][25] = {};
bool isans = 0;
bool mark[25][25] = {};
int fangx[15] = {0,-1,0,1};
int fangy[15] = {-1,0,1,0};
void ansout(){
isans = 1;
for(int i=1;i<=ansend;++i){
printf("(%d,%d)->",answer[i].ansx,answer[i].ansy);
}
printf("(%d,%d)\n",endx,endy);
}
bool check(int x,int y){
if(x>=1 && x<=m && y>=1 && y<=n){
if(mark[x][y]==0 && a[x][y]==1){
return 1;
}
}
return 0;
}
void dfs(int x,int y){
if(x==endx && y==endy){
ansout();
return ;
}
for(int i=0;i<4;++i){
int dfsx = x+fangx[i];
int dfsy = y+fangy[i];
if(check(dfsx,dfsy)){
answer[ansend].ansx = x;
answer[ansend].ansy = y;
ansend++;
mark[x][y] = 1;
dfs(dfsx,dfsy);
mark[x][y] = 0;
ansend--;
}
}
}
int main(){
cin>>m>>n;
for(int i=1;i<=m;++i){
for(int j=1;j<=n;++j){
cin>>a[i][j];
}
}
cin>>startx>>starty>>endx>>endy;
dfs(startx,starty);
if(isans==0) cout<<"-1"<<"\n";
return 0;
}
https://www.luogu.com.cn/record/153238013