using namespace std;
char a[9551][9551];
int b[9419][9149],c[9419][9914],ji[9419][8149],xy=1,kk=0,n,m;
int dx[4]={0,0,-1,1};//4410
int dy[4]={-1,1,0,0};
int xx,yy;
struct w{
int x1;
int y1;
int x2;
int y2;
};
w w1 ,w2, w3,oo[999],io[999];
void abc(){
queue<w> k;
w1.x1=0,w1.y1=0,w1.y2=0,w1.x2=0;
oo[0]=w1;
k.push(w1);
ji[0][0]=1;
while(!k.empty()){
w2=k.front();
k.pop();
if(w2.x1==n-1&&w2.y1==m-1){
xx=oo[xy-1].x2,yy=oo[xy-1].y2;
io[kk++]=oo[xy-1];
for(int mm=xy-1;mm>=0;mm--){
if(oo[mm].x1==xx&&oo[mm].y1==yy){
io[kk++]=oo[mm];
xx=oo[mm].x2,yy=oo[mm].y2;
}
}
for(int p=kk-1;p>=0;p--){
cout<<io[p].x1+1<<" "<<io[p].y1+1<<endl;
}
return;
}
for(int i=0;i<4;i++){
int xx= w2.x1+dx[i];int yy= w2.y1+dy[i];
if(yy>=0&&yy<=m-1&&xx>=0&&xx<=n-1&&!ji[xx][yy]&&a[xx][yy]=='.'){
w3.x1=xx,w3.y1=yy,w3.x2=w2.x1,w3.y2=w2.y1;
k.push(w3);
ji[xx][yy]=1;
oo[xy]=w3;
xy++;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
abc();
}```