#include <iostream>
#include <vector>
using namespace std;
int n, m;
int sx, sy, ex, ey, ans;
int a[15 + 5][15 + 5], mp[15 + 5][15 + 5];
int x_[5] = {0, -1, 0, 1};
int y_[5] = {-1, 0, 1, 0};
struct node
{
int x, y;
};
vector<node> res;
void print()
{
for(int i = 0; i < res.size() - 1; i++)
{
cout << "(" << res[i].x << "," << res[i].y << ")" << "->";
}
cout << "(" << res.back().x << "," << res.back().y << ")" << endl;
}
void dfs(int x1, int x2, int y1, int y2, int m, int n)
{
if(x1 == x2 && y1 == y2)
{
ans++;
print();
return ;
}
for(int i = 0; i < 4; i++)
{
int dx = x1 + x_[i];
int dy = y1 + y_[i];
if(mp[dx][dy] != 1 && dx <= m && dy <= n && dx >= 1 && dy >= 1 && a[dx][dy] != 1 )
{
a[dx][dy] = 1;
res.push_back({dx, dy});
dfs(dx, dy, x2, y2, m, n);
a[dx][dy] = 0;
res.pop_back();
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
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;
res.push_back({sx, sy});
a[sx][sy] = 1;
for(int i = 1; i <= m; i++)
{
for(int j = 1; j <= n; j++)
{
if(a[i][j] == 0)
{
mp[i][j] = 1;
}
}
}
dfs(sx, ex, sy, ey, m, n);
if(ans == 0) cout << "-1" << endl;
return 0;
}