#include <bits/stdc++.h>
using namespace std;
struct Node {
  int x, y, t;
  Node(int x = -1, int y = -1, int t = 0) : x(x), y(y) {}
};
Node a[1005];
string G[1005];
int row[1005], col[1005];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> G[i];
    G[i] = " " + G[i];
  }
  memset(row, 0, sizeof(row));
  memset(col, 0, sizeof(col));
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (G[i][j] == '*') {
        row[i]++;
        col[i]++;
        int flag = 0;
        for (int k = 0; k < cnt; k++) {
          if (a[k].x == i || a[k].y == j) {
            flag = 1;
            if (a[k].x == i)
              a[k].t = -a[k].x;
            else if (a[k].y == j)
              a[k].t = a[k].y;
            break;
          }
        }
        if (!flag && cnt < 10) a[cnt++] = Node(i, j);
      }
    }
  }
  int cntr = 0, cntc = 0;
  for (int i = 1; i <= n; i++) {
    if (row[i] > 1) cntr++;
  }
  for (int i = 1; i <= m; i++) {
    if (col[i] > 1) cntc++;
  }
  if (cnt > 2 || cntr > 1 || cntc > 1)
    cout << "NO" << endl;
  else {
    cout << "YES" << endl;
    if (cnt == 0)
      cout << 1 << " " << 1 << endl;
    else if (cnt == 1)
      cout << a[0].x << " " << a[0].y << endl;
    else {
      if (a[0].t != 0 && a[1].t != 0) {
        int x, y;
        if (a[0].t > 0)
          x = -a[1].t, y = a[0].t;
        else
          x = -a[0].t, y = a[1].t;
        cout << x << " " << y << endl;
      } else if (a[0].t != 0) {
        if (a[0].t > 0)
          cout << a[1].x << " " << a[0].y << endl;
        else
          cout << a[0].x << " " << a[1].y << endl;
      } else if (a[1].t != 0) {
        if (a[1].t < 0)
          cout << a[1].x << " " << a[0].y << endl;
        else
          cout << a[0].x << " " << a[1].y << endl;
      } else {
        cout << a[0].x << " " << a[1].y << endl;
      }
    }
  }
  return 0;
}
