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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

public class Solution implements Runnable
{
    private void solve() throws IOException
    {
        int n = nextInt();
        int m = nextInt();
        int[] rowWalls = new int[n];
        int[] colWalls = new int[m];
        int total = 0;

        for (int i = 0; i < n; i++) {
            char[] array = nextToken().toCharArray();
            for (int j = 0; j < m; j++) {
                if (array[j] == '*') {
                    colWalls[j]++;
                    rowWalls[i]++;
                    total++;
                }
            }
        }
        
        for (int i = 0; i < n; i++) {
           for (int j = 0; j < m; j++) {
                if (colWalls[j] + rowWalls[i] - 1 == total) {
                    writer.println("YES");
                    writer.println(++i + " " + ++j);
                    return;
                }
           }
       }


        writer.print( "NO" );

    }

    private BigInteger factorial (String n) {
        BigInteger k = new BigInteger( n );
        BigInteger ans = BigInteger.ONE;

        while (k.compareTo( BigInteger.ONE ) > 0)
        {
            ans = ans.multiply( k );
            k = k.subtract( BigInteger.ONE );
        }

        return ans;
    }

    private long combinations (int n, int r) {
        return (factorial( String.valueOf( n ) ).divide( (new BigInteger( String.valueOf( r )).multiply( factorial( String.valueOf( n-r ) ) )) )).longValue();
    }


    private String binaryXOR (String s1, String s2) {
        BigInteger a = new BigInteger( s1,2 );
        BigInteger b = new BigInteger( s2,2 );

        return a.xor( b ).toString(2);

    }


    private static void findDP( Node node )
    {
        for ( Node child : node.children )
        {
            if ( child.value > node.value )
            {
                child.dp = Math.max( child.dp, node.dp+1 );
                //findDP( child );
            }
        }
    }

    private static class Obj implements Comparable<Obj> {
        String name;
        int value;

        public Obj(int value) {
            this.value = value;
        }

        public Obj(String name, int value) {
            this.name = name;
            this.value = value;
        }

        @Override
        public int compareTo(Obj o) {
            return o.value-this.value;
        }
    }


    private static class Node
    {
        long value;
        long dp;
        List<Node> children;
        Node parent;

        public Node( int value )
        {
            this.value = value;
            dp = 1;
            children = new ArrayList<Node>();
        }
    }

    private static boolean isInt (String s) {
    	if (s.length() < 1)
    		return false;
    	else {
    		for (char c : s.toCharArray()) {
    			if (c < '0' || c > '9') {
    				return false;
    			}
    		}
    	}

    	return true;
    }

    private static Map<String,Integer> findSubString(String s, int k) {
        Map<String,Integer> map = new HashMap<>(  );
        for (int i = 0; i < s.length() - (k - 1); i++) {
            String str = new String( s.substring( i,i+k ) );
            if (map.containsKey( str )) {
                map.put( str, map.get( str ) + 1 );
            }
            else {
                map.put( str, 1 );

            }
        }

        return map;
    }



    //mergesort

    public static Comparable[] mergeSort(Comparable[] list)
    {
        if (list.length <= 1) {
            return list;
        }

        Comparable[] left = new Comparable[list.length / 2];
        Comparable[] right = new Comparable[list.length - left.length];
        System.arraycopy(list, 0, left, 0, left.length);
        System.arraycopy(list, left.length, right, 0, right.length);

        mergeSort(left);
        mergeSort(right);

        merge(left, right, list);
        return list;
    }

    private static void merge(Comparable[] left, Comparable[] right, Comparable[] result)
    {
        int leftIdx = 0;
        int rightIdx = 0;
        int index = 0;

        while (leftIdx < left.length && rightIdx < right.length)
        {
            if (left[leftIdx].compareTo(right[rightIdx]) < 0)
            {
                result[index++] = left[leftIdx];
                leftIdx++;
            }
            else
            {
                result[index++] = right[rightIdx];
                rightIdx++;
            }
        }

        System.arraycopy(left, leftIdx, result, index, left.length - leftIdx);
        System.arraycopy(right, rightIdx, result, index, right.length - rightIdx);
    }

    public static List<Obj> mergeSort(List<Obj> list) {
        if (list.size() <= 1) {
            return list;
        }

        List<Obj> left = new ArrayList(list.subList( 0, list.size()/2 ));
        List<Obj> right = new ArrayList (list.subList( left.size(), list.size() ));

        left = mergeSort(left);
        right = mergeSort(right);

        list = merge(left, right);

        return list;
    }

    private static List<Obj> merge(List<Obj> left,List<Obj> right)
   {
      int leftCounter = 0, rightCounter = 0;
       List<Obj> result = new ArrayList<>(  );

       while (leftCounter < left.size() && rightCounter < right.size()) {
           Obj leftItem = left.get( leftCounter );
           Obj rightItem = right.get( rightCounter );

           if ( leftItem.compareTo( rightItem ) < 0) {
               result.add( leftItem );
               leftCounter++;
            }
            else
            {
                result.add( rightItem );
                rightCounter++;
            }
       }

       if (leftCounter >= left.size())
           result.addAll( right.subList( rightCounter, right.size() ) );
       else if (rightCounter >= right.size())
           result.addAll( left.subList( leftCounter, left.size() ) );

       return result;
   }

    public static void main(String[] args) {
        new Solution().run();
    }

    BufferedReader reader;
    StringTokenizer tokenizer;
    PrintWriter writer;

    public void run() {
        try {
            reader = new BufferedReader(new InputStreamReader(System.in));
            tokenizer = null;
            writer = new PrintWriter(System.out);
            solve();
            reader.close();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }

    long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }

    double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }

    String nextToken() throws IOException {
        while (tokenizer == null || !tokenizer.hasMoreTokens()) {
            tokenizer = new StringTokenizer(reader.readLine());
        }
        return tokenizer.nextToken();
    }
}