#include<bits/stdc++.h>
using namespace std;
const int oo = 1e9 + 7;
const int N = 100 + 7;
int n, m;
char c[N][N];
bool vis[N][N];
pair<int, int>par[N][N];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
void bfs(int si, int sj){
queue<pair<int ,int>>q;
q.push({si, sj});
vis[si][sj] = 1;
par[si][sj] = {si, sj};
while(!q.empty()){
auto [u, v] = q.front();
q.pop();
if(u == 1 || u == m || v == 1 || v == n){
cout << "YES\n";
vector<pair<int, int>>ans;
pair<int, int>cur = {u, v};
while(true){
ans.push_back(cur);
if(cur.first == si && cur.second == sj) break;
cur = par[cur.first][cur.second];
}
reverse(ans.begin(), ans.end());
for(auto [i, j] : ans) cout << i << " " << j << "\n";
exit(0);
}
for(int i = 0; i < 4; i++){
int nx = u + dx[i];
int ny = v + dy[i];
if(!vis[nx][ny] && c[nx][ny] != 'X'){
vis[nx][ny] = 1;
par[nx][ny] = {u, v};
q.push({nx, ny});
}
}
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
int si = 0, sj = 0;
for(int i=1; i <= n; i++)
for(int j=1; j <= m; j++){
cin >> c[i][j];
if(c[i][j] == 'E'){
si = i;
sj = j;
}
}
bfs(si,sj);
cout << "NO";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBvbyA9IDFlOSArIDc7CmNvbnN0IGludCBOID0gMTAwICsgNzsKCmludCBuLCBtOwpjaGFyIGNbTl1bTl07CmJvb2wgdmlzW05dW05dOwpwYWlyPGludCwgaW50PnBhcltOXVtOXTsKCmludCBkeFtdID0gey0xLCAxLCAwLCAwfTsKaW50IGR5W10gPSB7MCwgMCwgLTEsIDF9OwoKdm9pZCBiZnMoaW50IHNpLCBpbnQgc2opewogICAgcXVldWU8cGFpcjxpbnQgLGludD4+cTsKICAgIHEucHVzaCh7c2ksIHNqfSk7CgogICAgdmlzW3NpXVtzal0gPSAxOwogICAgcGFyW3NpXVtzal0gPSB7c2ksIHNqfTsKCiAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICBhdXRvIFt1LCB2XSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBpZih1ID09IDEgfHwgdSA9PSBtIHx8IHYgPT0gMSB8fCB2ID09IG4pewogICAgICAgICAgICBjb3V0IDw8ICJZRVNcbiI7CgogICAgICAgICAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+YW5zOwogICAgICAgICAgICBwYWlyPGludCwgaW50PmN1ciA9IHt1LCB2fTsKCiAgICAgICAgICAgIHdoaWxlKHRydWUpewogICAgICAgICAgICAgICAgYW5zLnB1c2hfYmFjayhjdXIpOwogICAgICAgICAgICAgICAgaWYoY3VyLmZpcnN0ID09IHNpICYmIGN1ci5zZWNvbmQgPT0gc2opIGJyZWFrOwogICAgICAgICAgICAgICAgY3VyID0gcGFyW2N1ci5maXJzdF1bY3VyLnNlY29uZF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV2ZXJzZShhbnMuYmVnaW4oKSwgYW5zLmVuZCgpKTsKCiAgICAgICAgICAgIGZvcihhdXRvIFtpLCBqXSA6IGFucykgY291dCA8PCBpIDw8ICIgIiA8PCBqIDw8ICJcbiI7CgogICAgICAgICAgICBleGl0KDApOwogICAgICAgIH0KCiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDQ7IGkrKyl7CiAgICAgICAgICAgIGludCBueCA9IHUgKyBkeFtpXTsKICAgICAgICAgICAgaW50IG55ID0gdiArIGR5W2ldOwoKICAgICAgICAgICAgaWYoIXZpc1tueF1bbnldICYmIGNbbnhdW255XSAhPSAnWCcpewogICAgICAgICAgICAgICAgdmlzW254XVtueV0gPSAxOwogICAgICAgICAgICAgICAgcGFyW254XVtueV0gPSB7dSwgdn07CiAgICAgICAgICAgICAgICBxLnB1c2goe254LCBueX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKCiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIGludCBzaSA9IDAsIHNqID0gMDsKCiAgICBmb3IoaW50IGk9MTsgaSA8PSBuOyBpKyspCiAgICAgICAgZm9yKGludCBqPTE7IGogPD0gbTsgaisrKXsKICAgICAgICAgICAgY2luID4+IGNbaV1bal07CgogICAgICAgICAgICBpZihjW2ldW2pdID09ICdFJyl7CiAgICAgICAgICAgICAgICBzaSA9IGk7CiAgICAgICAgICAgICAgICBzaiA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgYmZzKHNpLHNqKTsKCiAgICBjb3V0IDw8ICJOTyI7Cn0KCg==