3 3
*..
**.
...
 3 3
*..
*..
***
 10 10
........*.
*.........
........*.
........*.
..........
..........
..........
........*.
.....*..*.
***.......
 3 3
.*.
.*.
.**
 10 1
*
*
*
*
*
*
*
*
*
*
 1 3
...
 3 3
...
.*.
...
 3 5
....*
....*
*****
 3 3
*..
...
..*
 6 5
*.*..
..*..
*****
..*..
..*..
..*..
 3 12
...**.......
.....**.....
........*...
 4 4
..*.
**.*
..*.
..*.
 3 4
....
..*.
....
 2 1
.
*
 2 3
..*
..*
 3 3
..*
*..
...
 4 4
****
****
****
****
 1 2
.*
 4 4
...*
....
....
*...
 1 10
**********
 2 4
....
....
 3 2
.*
*.
*.
 5 5
.....
.....
.....
.....
.....
 3 3
...
...
...
 10 20
....................
.........*..........
....................
....................
....................
....................
....................
....................
...*................
....................
 3 2
*.
.*
.*
 2 3
..*
**.
 3 3
*..
.*.
...
 10 20
....................
.........*..........
....................
....................
....................
....................
....................
....................
...*..............*.
.........*..........
 3 3
***
.*.
.*.
 2 2
*.
.*
 2 2
..
.*
 4 4
....
....
..*.
....
 4 4
*...
*...
....
****
 10 10
...*......
..........
.......*..
.*........
******.*.*
.*........
..........
..........
..........
..........
 3 3
.*.
..*
...
 4 4
*...
....
....
...*
 10 20
....................
.........*..........
....................
....................
....................
....................
....................
....................
...*.....*........*.
.........*..........
 5 5
...*.
...*.
...*.
...*.
***.*
 3 2
..
..
**
 3 3
***
***
***
 6 5
..*..
..*..
*****
..*..
..*..
..*.*
 4 4
....
.*..
..*.
....
 3 3
.*.
*..
...
 10 10
.........*
.........*
.........*
.........*
.........*
.........*
.........*
.........*
.........*
.........*
 10 10
..........
..........
.**....***
..........
..........
..........
..........
..........
..........
..........
 2 4
...*
...*
 5 5
.....
.....
..*..
.....
.....
 6 5
..*..
..*..
**.**
..*..
..*..
..*..
 10 10
.........*
.........*
........**
.........*
.........*
.........*
.........*
.........*
.........*
.........*
 1 1
*
 5 5
*..*.
.....
.....
.....
...*.
 2 3
*.*
...
 10 10
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
 10 10
..........
..........
....*.....
..........
..........
**..*.****
....*.....
....*.....
....*.....
..........
 3 4
....
....
....
 3 4
****
..*.
..*.
 3 3
*.*
.*.
...
 5 5
.....
..*..
.*.*.
..*..
.....
 3 5
....*
....*
....*
 2 2
**
.*
 5 7
...*...
...*...
...*...
..*.*..
...*...
 5 5
.*...
.....
...*.
...*.
.....
 3 3
*.*
...
*.*
 5 4
....
....
*..*
....
.*..
 6 3
...
...
...
...
**.
.*.
 4 4
....
....
....
....
 3 3
..*
*..
..*
 3 4
...*
...*
...*
 5 5
..*..
..*..
**.**
..*..
..*..
 1 1
.
 3 1
*
*
*
 3 3
...
...
.*.
 10 20
....................
.........*..........
....................
....................
....................
....................
....................
....................
...*..............*.
....................
 4 4
.*..
*...
.*..
.*..
 4 4
.*..
*.**
....
.*..
 4 4
*.*.
..*.
.***
..*.
 5 5
*...*
.....
.....
.....
..*..
 3 3
**.
...
..*
 2 2
..
..
 3 3
..*
..*
**.
 3 3
...
*.*
.*.
 5 3
.*.
.*.
.*.
***
...
 4 2
**
.*
.*
.*
 3 3
.*.
*.*
.*.
 3 3
***
.*.
...
 3 2
*.
.*
*.
 3 2
.*
.*
*.
 2 3
.*.
*.*
 3 3
...
.*.
..*
 6 6
..*...
......
......
......
......
*....*
 10 10
..........
..........
....*.....
..........
..........
..........
....*.....
....*.....
....*.....
..........
 3 3
..*
*..
*..
 2 2
.*
*.
 3 2
.*
*.
.*
 4 4
..*.
....
...*
....
 3 3
...
..*
.*.
 5 5
*****
*****
*****
*****
*****
 3 3
.*.
..*
.*.
 4 4
.***
*...
*...
*...
 10 10
..........
..........
..........
..........
..........
***.*.****
..........
..........
..........
..........
 6 5
..*..
..*..
.*...
..*..
..*..
..*..
 4 4
***.
....
*...
....
 5 4
.*..
*.**
.*..
.*..
.*..
 2 2
**
**
 3 4
.*..
*.**
....
 3 10
.......*..
........*.
.........*
 4 4
....
...*
....
*..*
 4 4
*...
....
....
..**
 3 3
..*
.*.
..*
 3 3
*.*
*..
*.*

YES
2 1
 YES
3 1
 NO
 YES
3 2
 YES
1 1
 YES
1 1
 YES
1 2
 YES
3 5
 YES
1 3
 NO
 NO
 YES
2 3
 YES
1 3
 YES
1 1
 YES
1 3
 YES
1 1
 NO
 YES
1 1
 YES
1 1
 YES
1 1
 YES
1 1
 YES
1 1
 YES
1 1
 YES
1 1
 YES
2 4
 YES
1 2
 YES
2 3
 YES
1 2
 YES
9 10
 YES
1 2
 YES
1 2
 YES
1 2
 YES
1 3
 YES
4 1
 NO
 YES
1 3
 YES
1 4
 YES
9 10
 YES
5 4
 YES
3 1
 NO
 NO
 YES
2 3
 YES
1 1
 YES
1 10
 YES
3 1
 YES
1 4
 YES
1 3
 YES
3 3
 YES
3 10
 YES
1 1
 YES
1 4
 YES
1 1
 YES
1 1
 YES
6 5
 YES
1 1
 YES
1 3
 YES
1 2
 YES
3 3
 YES
1 5
 YES
1 2
 YES
4 4
 YES
1 4
 NO
 YES
3 2
 YES
5 2
 YES
1 1
 YES
2 3
 YES
1 4
 YES
3 3
 YES
1 1
 YES
1 1
 YES
1 2
 YES
9 10
 YES
2 2
 YES
2 2
 NO
 YES
1 3
 YES
1 3
 YES
1 1
 YES
3 3
 YES
2 2
 YES
4 2
 YES
1 2
 YES
2 2
 YES
1 2
 YES
2 1
 YES
3 2
 YES
2 2
 YES
2 3
 YES
6 3
 YES
1 5
 YES
1 1
 YES
1 1
 YES
2 2
 YES
1 4
 YES
2 2
 NO
 YES
2 2
 YES
1 1
 YES
6 1
 YES
3 3
 YES
1 1
 YES
2 2
 NO
 YES
2 2
 NO
 YES
4 4
 YES
4 1
 YES
2 3
 NO

''' ===============================
    -- @uthor : Kaleab Asfaw
    -- Handle : kaleabasfaw2010
    -- Bio    : High-School Student
    ==============================='''

# Fast IO
import sys
import os
from io import BytesIO, IOBase
BUFSIZE = 8192
class FastIO(IOBase):
    newlines = 0
    def __init__(self, file): self._fd = file.fileno(); self.buffer = BytesIO(); self.writable = "x" in file.mode or "r" not in file.mode; self.write = self.buffer.write if self.writable else None
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b: break
            ptr = self.buffer.tell(); self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0; return self.buffer.read()
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)); self.newlines = b.count(b"\n") + (not b); ptr = self.buffer.tell(); self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1; return self.buffer.readline()
    def flush(self):
        if self.writable: os.write(self._fd, self.buffer.getvalue()); self.buffer.truncate(0), self.buffer.seek(0)
class IOWrapper(IOBase):
    def __init__(self, file): self.buffer = FastIO(file); self.flush = self.buffer.flush; self.writable = self.buffer.writable; self.write = lambda s: self.buffer.write(s.encode("ascii")); self.read = lambda: self.buffer.read().decode("ascii"); self.readline = lambda: self.buffer.readline().decode("ascii")
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout); input = lambda: sys.stdin.readline().rstrip("\r\n")
# Others
# from math import floor, ceil, gcd
# from decimal import Decimal as d
mod = 10**9+7
def lcm(x, y): return (x * y) / (gcd(x, y))
def fact(x, mod=mod):
    ans = 1
    for i in range(1, x+1): ans = (ans * i) % mod
    return ans
def arr2D(n, m, default=0): return [[default for j in range(m)] for i in range(n)]
def arr3D(n, m, r, default=0): return [[[default for k in range(r)] for j in range(m)] for i in range(n)]
def sortDictV(x): return {k: v for k, v in sorted(x.items(), key = lambda item : item[1])}
class DSU:
    def __init__(self, length): self.length = length; self.parent = [-1] * self.length  # O(log(n))
    def getParent(self, node, start):  # O(log(n))
        if node >= self.length: return False
        if self.parent[node] < 0:
            if start != node: self.parent[start] = node
            return node
        return self.getParent(self.parent[node], start)
    def union(self, node1, node2):  # O(log(n))
        parent1 = self.getParent(node1, node1); parent2 = self.getParent(node2, node2)
        if parent1 == parent2: return False
        elif self.parent[parent1] <= self.parent[parent2]: self.parent[parent1] += self.parent[parent2]; self.parent[parent2] = parent1
        else: self.parent[parent2] += self.parent[parent1]; self.parent[parent1] = parent2
        return True
    def getCount(self, node):  return -self.parent[self.getParent(node, node)] # O(log(n))

def exact(num):
    if abs(num - round(num)) <= 10**(-9):return round(num)
    return num

def solve(n, m, lst):
    points = []
    rowCount = {}
    colCount = {}
    get = False
    for i in range(n):
        for j in range(m):
            if lst[i][j] == "*":
                points.append([i, j])
                if rowCount.get(i) == None: 
                    rowCount[i] = 0
                rowCount[i] += 1

                if colCount.get(j) == None:
                    colCount[j] = 0
                colCount[j] += 1
                get = True

    if len(rowCount) == 1 and len(colCount) == 1: print("YES\n", 1," ", 1, sep=""); return
    x, y = -1, -1
    for i in range(1000):
        for j in range(1000):
            if rowCount.get(i) != None:
                if rowCount[i] > 1:
                    if y == -1 or y == i: y = i
                    else: print("NO"); return

            if colCount.get(j) != None:
                if colCount[j] > 1:
                    if x == -1 or x == j: x = j
                    else: print("NO"); return

    if x == -1 and y == -1:
        if len(points) == 2:
            x = points[0][1]
            y = points[1][0]
    
    if x == -1 and y == -1 and get: print("NO"); return
    if x == -1: x += 1
    if y == -1: y += 1
    for i in points:
            if i[0] != y and i[1] != x: 
                print("NO")
                return
    print("YES")
    print(y + 1, x + 1)

n, m = list(map(int, input().split()))
lst = []
for i in range(n):
    lst.append(input())
solve(n, m, lst)