#include <bits/stdc++.h>
using namespace std;
struct point {
  int x;
  int y;
};
int main() {
  vector<point> array;
  int n, m;
  scanf("%d %d", &m, &n);
  int num = n * m;
  int flag = 0, flag1 = 0;
  int r = 0, c = 1;
  while (1) {
    char p;
    scanf("%c", &p);
    if (p == '.')
      r++;
    else if (p == '*') {
      r++;
      if (r == n + 1) {
        c++;
        r = 1;
      }
      point a;
      a.x = c;
      a.y = r;
      array.push_back(a);
    }
    if (r == n + 1) {
      c++;
      r = 1;
    }
    if (r == n && c == m) break;
  }
  if (array.size() >= 2) {
    int i;
    flag = 0;
    for (i = 1; i < array.size(); i++) {
      if (array[0].x != array[i].x && array[0].y != array[i].y) {
        flag = 1;
        break;
      }
    }
    if (!flag)
      printf("YES\n%d %d", array[0].x, array[0].y);
    else if (flag == 1) {
      int x1 = array[0].x, y1 = array[i].y;
      int x2 = array[i].x, y2 = array[0].y;
      flag = 0;
      flag1 = 0;
      for (i = 1; i < array.size(); i++) {
        if (x1 != array[i].x && y1 != array[i].y) {
          flag = 1;
          break;
        }
      }
      if (flag == 0)
        printf("YES\n%d %d", x1, y1);
      else if (flag == 1) {
        for (i = 1; i < array.size(); i++) {
          if (x2 != array[i].x && y2 != array[i].y) {
            flag1 = 1;
            break;
          }
        }
        if (flag1 == 0) printf("YES\n%d %d", x2, y2);
      }
      if (flag && flag1) printf("NO");
    }
  } else if (array.empty())
    printf("YES\n1 1");
  else
    printf("YES\n%d %d", array[0].x, array[0].y);
  return 0;
}
