#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";
}

