#include<iostream>
#include<algorithm>
#include<stack>
#include<set>
#include<queue>
#include<map>
#include<string>
#include<cstring>
#include<vector>
#include<ctype.h>
#include<sstream>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
struct node
{
int x,y;
int s;
int f;//父亲在队列中的编号。???干啥用的呢?有点像课本上的那个呀。
};
node que[2501];
int head,tail;
//mmp数组表示地图
int mmp[51][51];
//Book数组用来记录哪些点已经在队列中,防止一个点被重复扩展.....为啥教材上没有呢?
int Book[51][51];
//定义一个用于表示走的方向的数组
int Next[4][2]={
{0,1},{1,0},{0,-1},{-1,0}};
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>mmp[i][j];
int startx,starty,p,q;
ci